2016-12-31 33 views
1

我正在與Django和芹菜。在我的芹菜任務中,我實例化一個類,並且該類負責生成和郵寄CSV文件。 我的問題是我越來越IOError: [Errno 13] Permission denied 當我嘗試做fp = open(filename, 'w')。但是,如何才能知道我的服務器的哪個用戶正在嘗試創建該文件,以及如何爲該用戶提供適當的權限。我正在使用AWS服務器。 我寫文件的代碼是這樣的:哪位用戶在python中打開一個文件?

with open(filename, 'w') as f_pointer: 
    os.chmod(filename, 777) 
    myfile = csv.writer(f_pointer) 
    myfile.writerow(columns) 
    myfile.writerows(rows) 

感謝

+3

'chmod 777'是一個醜陋的黑客。就像讓你的門解鎖一樣,所以你不必弄清楚如何使用鑰匙。請改爲了解unix文件權限。你能提供關於你如何執行腳本的信息和'filename'的路徑以獲得一個好的答案嗎? –

+0

您需要在打開文件之前提供權限。嘗試在打開文件之前移動os.chmod命令。 – kvivek

+0

記錄'getpass.getuser()',然後你就會知道。 – tdelaney

回答

0

首先檢查文件權限或所有者,那麼使用屬性的權限。

的ls -l文件名

另外,你應該檢查該用戶是否可以在目錄中創建的文件名。

0

該文件由運行該進程的同一用戶打開。現在,如果創建要寫入的文件或文件的目錄不能被用戶寫入,那麼chmod將不起作用。

您必須選擇用戶可寫的目錄/文件。