2014-04-22 75 views
0

我試圖從網絡位置的文件「build_ver.txt」中讀取值,將值遞增1並寫回遞增的新值價值「build_ver.txt」和運行到以下錯誤,任何人都可以提供如何實現這一建議?如何讀取,遞增1並將值寫回到網絡文件位置

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) 

ERROR: -

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

反斜線轉義特殊字符,你的情況'\ f':form-feed和'\ b':bell。您必須用另一個反斜槓或使用r'' - Syntax來轉義反斜槓。下一個問題:你不讀文件,你只重命名對象。如果你要讀對象,你會得到一個字符串,而不是一個數字,如果你想將字符串轉換爲數字,你就不能寫它,因爲它不是一個字符串。總而言之,你會得到:

with open(r'\\network\files\build_ver.txt','r+') as f: 
    value = int(f.read()) 
    f.seek(0) 
    f.write(str(value + 1)) 
+0

你想使用'r +'作爲文件模式,因爲否則在讀取它之前版本號會被刪除。 – Jezzamon

+0

@Jezzamon:你的權利。 – Daniel

2

蟒反斜線用作轉義序列。這是,如果我在你的字符串類型會發生什麼:

>>> '\\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 
>>> 
+0

我現在得到以下錯誤..文件 「build_ver.py」,3號線,在 值=價值+ 1 類型錯誤:不支持的操作數類型(S)爲+ :'file'和'int' –

+0

請通過編輯將您的完整代碼發佈到您的問題中;看起來你還沒有發佈這個代碼。 –

+0

- 修正了格式化,現在可以看到代碼 –

相關問題