如何读取、加一并写回网络文件位置的值
我正在尝试从一个网络位置的文件“build_ver.txt”中读取一个数值,把这个数值加一,然后再把加过的数值写回“build_ver.txt”。但是我遇到了以下错误,有谁能给我一些建议,告诉我该怎么做吗?
错误信息:
with open('\\network\files\build_ver.txt','w+') as f:
value = f
value = value+1
value_inc = open('\\network\files\build_ver.txt','w+')
value_inc.write(value)
错误内容:
Traceback (most recent call last):
File "build_ver.py", line 1, in <module>
with open('\\network\files\build_ver.txt','w+') as f:
IOError: [Errno 22] invalid mode ('w+') or filename: '\\network\x0ciles\x08uild_ver.txt'
2 个回答
2
在Python中,反斜杠(\)用作转义符。也就是说,当我输入你的字符串时,会发生这样的事情:
>>> '\\network\files\build_ver.txt'
'\\network\x0ciles\x08uild_ver.txt'
>>> print '\\network\files\build_ver.txt'
\network
ileuild_ver.txt
>>>
相反,你可以把代码改成:
value_inc = open('\\network\\files\\build_ver.txt','w+')
value_inc.write(value)
如下面所示:
>>> print '\\network\\files\\build_ver.txt'
\network\files\build_ver.txt
>>>
5
反斜杠用来转义特殊字符,比如在你的例子中,'\f'表示换页符,'\b'表示响铃。你需要用另一个反斜杠来转义这个反斜杠,或者使用r''这种写法。接下来一个问题是:你并没有读取文件,而只是重命名了对象。如果你读取了对象,你会得到一个字符串,而不是数字。如果你想把字符串转换成数字,你就不能写入,因为它不是字符串。总的来说,你会得到这个:
with open(r'\\network\files\build_ver.txt','r+') as f:
value = int(f.read())
f.seek(0)
f.write(str(value + 1))