如何读取、加一并写回网络文件位置的值

3 投票
2 回答
3567 浏览
提问于 2025-04-18 03:41

我正在尝试从一个网络位置的文件“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))

撰写回答