问题
I\'m not sure why, but for some reason, whenever I have \"region\" in the file name of the output file, it gives me this error:
IOError: [Errno 22] invalid mode (\'w\') or filename: \'path\\regionlog.txt\'
It does this for \"region.txt\", \"logregion.txt\", etc.
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
Why is this? I really would like to name my file \"regionlog.txt\" but it keeps coming up with that error. Is there a way around it?
回答1:
Use forward slashes:
'path/regionlog.txt'
Or raw strings:
r'path\regionlog.txt'
Or at least escape your backslashes:
'path\\regionlog.txt'
\r
is a carriage return.
Another option: use os.path.join
and you won't have to worry about slashes at all:
output = os.path.abspath(os.path.join('path', 'regionlog.txt'))
回答2:
In C standard language, \t
, \n
, \r
are escape characters. \t
is a transverse to the next TAB position. \n
is a newline and \r
is a carriage return. You should use \\r
or /r
, and you will solve the problem!
回答3:
Additionaly, Python also gives this message when trying to open a file > 50 MB from a SharePoint shared drive.
https://support.microsoft.com/en-us/help/2668751/you-cannot-download-more-than-50-mb-or-upload-large-files-when-the-upl
回答4:
Another simple solution is changing the "\r" instances in the filename path to "\R"
来源:https://stackoverflow.com/questions/15141761/region-ioerror-errno-22-invalid-mode-w-or-filename