2017-09-13 5 views
-1

私はリモートサーバ、例えばIP:192.128.0.3で作業しています。このサーバには、2つのフォルダがあります:cgi-bin & html。私のpythonコードファイルは、にdata.jsonファイルを作成したいRohithフォルダが既に存在するcgi-binにあります。私は、次のコード別のフォルダにある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+にファイルモードを変更してみてください添付や読書の両方のファイルを開きます。ファイルが存在する場合、ファイルポインタはファイルの最後にあります。ファイルが追加モードで開きます。 ファイルが存在しない場合は、読み書き用の新しいファイルを作成します。

+0

ありがとうございます。これは、IPパスとは異なりローカルパスを返すため動作します。 @ Rohit。 –

+0

あなたが歓迎します。あなたが私の答えを見つけたら、答えを受け入れることを検討してください。 – 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データはdictです –

+0

しかし、私は同じフォルダに作成できます。 –

0

私の隣に座っている男のおかげで! IPパスのようにではなく、ローカルの宛先としてパスを変更したときに機能します:

fileobj = open("/var/www/html/Rohith/data.json","w+"); 
関連する問題