1

大きなスクリプトの 1 つからファイルを開くことができないという非常に奇妙な問題があります。

この問題は断続的に発生し、エラーを理解できないようです。このエラーが発生しています:

IOError: [Errno 22] invalid mode ('w+') or filename: 'D:\\R4a\\2014_05\\R01359\\R01359_data_dwnhi.dat'

私のスクリプトのこのコマンドから:

with open(os.path.normpath(os.path.join(sonpath,base+'_data_dwnhi.dat')), 'w+') as ff:
   fp = np.memmap(ff, dtype='int16', mode='w+', shape=np.shape(tmp2))

私が使用するとき:

 if os.path.exists(os.path.normpath(os.path.join(sonpath,base+'_data_dwnhi.dat')))== True:
    print os.path.normpath(os.path.join(sonpath,base+'_data_dwnhi.dat')) + ' is a file'

として評価されTrueます。また、openコマンドを単独で実行すると、次ipythonのファイルが正常に開きます。

open('D:\\R4a\\2014_05\\R01359\\R01359_data_dwnhi.dat', 'w+')

私は言葉を失っており、errno 22エラーは誤解を招くと思います。前述したように、この問題は断続的に発生し、一部のファイルで機能します。誰かが私が間違っていることを知っていますか?

私は Windows 8 マシン 64 ビットで作業しており、Anaconda 2.1.0 (64 ビット) ディストリビューションから Python バージョン 2.7.8 を実行しています。

4

2 に答える 2

0

通常のファイルのように開くため、エラー: IOError: [Errno 22] invalid mode. 代わりにこれを行います:

with open(path, 'wb') as f:
    pass
于 2015-07-22T21:03:26.130 に答える
0

いくつかの試行錯誤の後、報告された文字列np.memmap()以外のファイルを開くように指示します。.__doc__mode

#------------------------------------------------------++++++++ TRY:
#                                                      ||||||||
#                                                      vvvvvvvv
|>>> MM = np.memmap( "temporary_DATA.memmap", mode = 'wNONSENSE+' )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27.anaconda\lib\site-packages\numpy\core\memmap.py", line 208, in __new__
    (valid_filemodes + list(mode_equivalents.keys())))
ValueError: mode must be one of ['r', 'c', 'r+', 'w+', 'readwrite', 'write', 'readonly', 'copyonwrite']
#                                 ^    ^    ^     ^     ^            ^        ^           ^
#                                 |    |    |     |     |            |        |           |
#---------------------------------+----+----+-----+-----+------------+--------+-----------+

最後に、このエラーのトレースバックは、 にリストされていない代替文字列を示しましたnp.memmap.__doc__。これらは正常に機能します

with open( os.path.normpath( os.path.join( sonpath,
                                           base + '_data_dwnhi.dat'
                                           )
                             ),
           'w+'
           ) as    ff:
   fp = np.memmap( ff, mode  = 'readwrite',      # options listed in np Traceback
                       shape = np.shape( tmp2 ),
                       dtype = 'int16'
                       )

タカ派の pythoneers の場合、投稿では意図的に PEP-8 以外のソース コード形式を使用しています。これは著者の経験によると、学習段階では、コードの読みやすさが課題解決への焦点を改善し、労力を費やすのではなく、根底にある概念に慣れるのに役立ちます。タイポグラフィを正式に遵守することについて。ヘルプを提供するという原則が尊重され、読みやすさという名目で PEP-8 以外のスタイル形式が許されることを願っています。

于 2015-10-07T08:16:46.957 に答える