21

理由はわかりませんが、何らかの理由で、出力ファイルのファイル名に「region」が含まれていると、次のエラーが発生します。

IOError:[Errno 22]無効なモード('w')またはファイル名:'path \ regionlog.txt'

これは、「region.txt」「logregion.txt」などに対して行われます。

class writeTo:
    def __init__(self, stdout, name):
       self.stdout = stdout
       self.log = file(name, 'w') #here is where it says the error occurs

output = os.path.abspath('path\regionlog.txt')
writer = writeTo(sys.stdout, output) #and here too

どうしてこれなの?私は本当に私のファイルに「regionlog.txt」という名前を付けたいのですが、それはそのエラーを出し続けます。それを回避する方法はありますか?

4

4 に答える 4

32

スラッシュを使用します。

'path/regionlog.txt'

または生の文字列:

r'path\regionlog.txt'

または、少なくともバックスラッシュをエスケープします。

'path\\regionlog.txt'

\rキャリッジリターンです。


別のオプション:を使用するos.path.joinと、スラッシュについてまったく心配する必要がなくなります。

output = os.path.abspath(os.path.join('path', 'regionlog.txt'))
于 2013-02-28T17:24:53.957 に答える
1

C標準言語で\t\n、、、\rはエスケープ文字です。\t次のTAB位置を横切るです。\nは改行で\r、キャリッジリターンです。\\rまたはを使用する必要/rがあります。そうすれば、問題は解決します。

于 2017-03-14T11:29:41.530 に答える
1

さらに、Pythonは、SharePoint共有ドライブから50MBを超えるファイルを開こうとしたときにもこのメッセージを表示します。

https://support.microsoft.com/en-us/help/2668751/you-cannot-download-more-than-50-mb-or-upload-large-files-when-the-upl

于 2017-11-21T13:20:41.537 に答える
-1

もう1つの簡単な解決策は、ファイル名パスの「\r」インスタンスを「\R」に変更することです。

于 2018-01-10T07:20:46.580 に答える