理由はわかりませんが、何らかの理由で、出力ファイルのファイル名に「リージョン」があると、このエラーが発生します。
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」という名前を付けたいのですが、そのエラーが引き続き発生します。それを回避する方法はありますか?
スラッシュを使用します。
'path/regionlog.txt'
または生の文字列:
r'path\regionlog.txt'
または、少なくともバックスラッシュをエスケープします。
'path\\regionlog.txt'
\r
は復帰です。
別のオプション:os.path.join
を使用すると、スラッシュについてまったく心配する必要はありません。
output = os.path.abspath(os.path.join('path', 'regionlog.txt'))
C標準言語では、\t
、\n
、\r
はエスケープ文字です。 \t
は、次のTAB位置を横切るものです。 \n
は改行で、\r
は改行です。 \\r
または/r
を使用する必要があります。問題を解決します!
さらに、Pythonは、SharePoint共有ドライブから50 MBを超えるファイルを開こうとすると、このメッセージを表示します。
別の簡単な解決策は、ファイル名パスの「\ r」インスタンスを「\ R」に変更することです