2013-08-30 212 views
9

我想創建一個文件並在python中寫入一些整數數據。例如,我有一個變量ABC = 3,我試圖將其寫入到一個文件(該文件不存在,我以爲蟒蛇會自行創建):使用Python寫入文件時權限被拒絕

fout = open("newfile.dat", "w") 
fout.write(abc) 

首先,將蟒蛇創建一個newfile.dat本身?其次,它給我這個錯誤:

IOError: [Errno 13] Permission denied: 'newfile.dat' 

這裏有什麼問題?

+0

是的Python必須自己創建,但你可以看到文件夾的權限? – badc0re

回答

1

要回答你的第一個問題:是的,如果文件不存在,Python將創建它。其次,運行python腳本的用戶(你自己)沒有寫權限來在目錄中創建一個文件。

+0

這是一個許可錯誤,現在已經修復,但是仍然會出現此錯誤: TypeError:預期字符緩衝區對象 – user1921843

+1

要寫入除字符串之外的其他字符,需要首先將其轉換爲字符串。請參閱:http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects –

+0

要添加到@RobertCaspary的評論中,您可以使用'str(abc)'將其轉換爲字符串。所以'fout.write(str(abc))' – mavili

0

請確保您有該目錄的寫權限,你試圖通過創建性能

+1

會幫助OP給出示例 – geotheory

2

文件,請關閉文件如果您的計算機上仍處於打開狀態,然後再嘗試運行Python代碼。 我希望它的工作原理

+0

「w」模式對於創建文件來說看起來是正確的。如果不是打開的文件,也許這是工作目錄的權限問題? OP使用什麼操作系統? – killthrush

2

當您試圖創建一個文件具有相同名稱的目錄也會發生這種情況:

import os 

conflict = 'conflict' 

# Create a directory with a given name 
try: 
    os.makedirs(conflict) 
except OSError: 
    if not os.path.isdir(conflict): 
     raise 

# Attempt to create a file with the same name 
file = open(conflict, 'w+') 

結果:

IOError: [Errno 13] Permission denied: 'conflict' 
1

我有同樣的問題使用像這樣的cmd(windows命令行)

C:\Windows\System32> "G:\some python programs\frequency-counter-from-text.py" 

pyth在文件像這樣

myfile = open('myOutput.txt', 'w') 

錯誤是,當你不使用的完整路徑,蟒蛇會使用當前目錄,而且由於CMD默認目錄爲

C:\Windows\System32 

贏得「T工作,因爲它似乎是寫保護和需求權限&確認形成管理員

相反,你應該使用完整路徑,例如:

myfile = open('G:\some python programs\myOutput.txt', 'w')