2017-09-13 62 views
-1

我在遠程服務器上工作,比如說IP:192.128.0.3。在此服務器上有兩個文件夾:cgi-bin & html。我的Python代碼文件位於cgi-bin,它想要在html/Rohith/中創建data.json文件,其中Rohith文件夾已存在。我用下面的代碼在不同文件夾上使用python創建文件

jsonObj = json.dumps(main_func(s)); 
fileobj = open("http://192.128.0.3/Rohith/data.json","w+"); 
fileobj.write(jsonObj); 

但它不是創建該文件存在,雖然我可以在我的Python腳本的同一文件夾(cgi-bin目錄)創建。誰能告訴我爲什麼它不在給定的目的地創建文件?

+0

請刪除';'每行的半列在python中不是必需的 –

+0

刪除'「http:」' –

+1

是的,它是可選的,但我喜歡。 @AmanJaiswal :) –

回答

1

這可能是路徑問題;我建議使用完整路徑。請嘗試以下操作:

import os 

jsonObj = json.dumps(main_func(s)); 
path = '\\'.join(__file__.split('\\')[:-2]) # this will return the parent 
              # folder of cgi-bin on Windows 
out_file = path + '/html/Ronhith/data.json' 
fileobj = open(out_file, 'w+') # w+ mode creates the file if its not exists 
fileobj.write(jsonObj) 

如果仍然沒有工作,請嘗試從w+

A +改變文件模式a+打開兩個追加和閱讀文件。如果文件存在,文件指針位於文件末尾。該文件以附加模式打開。 如果該文件不存在,它會創建一個新的文件用於讀取和寫入。

+0

謝謝。它的工作原理是它返回與IP路徑不同的本地路徑。 –

+0

@Rohit。歡迎您,如果您發現我的答案有幫助,請考慮接受答案 – Vinny

+0

選擇您的答案。但爲什麼你低估了我的問題? –

1

file.write不首先創建一個目錄,你必須創建一個目錄,然後使用file.write()例如

if not os.path.exists("../html/Rohith/"): 
    os.makedirs("../html/Rohith/") 
jsonObj = json.dumps(mainfunc(s)) 
fileobj = open("../html/Rohith/data.json","w+") 
fileobj.write(jsonObj) 
+0

但是目錄已經存在。 –

+0

你不能直接寫入json數據到文件中,你必須將其轉換爲字符串json數據是字典 –

+0

但我可以在同一個文件夾中創建。 –

0

感謝坐在我旁邊的那個人!當我將路徑更改爲本地目標而非IP路徑時,它起作用:

fileobj = open("/var/www/html/Rohith/data.json","w+"); 
相關問題