2016-04-05 22 views
0

「開く」機能で作成したファイルを保存しようとしています。 私はディレクトリを変更するためにほとんどすべてを試みましたが、何も動作しません。ファイルは、私が前に読み込んだファイルのフォルダに常に保存されます。保存パスを変更する - Python

file = open(fname[0] + ft, 'w') 
file.write("Test") 
file.close() 

これは単純ですが、作成するパスを変更するにはどうすればよいですか?

個々の機能でファイルダイアログ:

global fname 
fname = QFileDialog.getOpenFileName(None, 'Please choose your File.',"C:\\Program Files", "Text-Files(*.txt)") 

そして、(あまりにも個々の機能で)ファイル標準は、私がの.pyまたは.pywに設定します]チェックボックスおよびフィートを刻々と過ぎて、ファイルの種類を設定します

if self.exec_py.isChecked() == True: 
    global ft 
    ft = ".py" 

私はすでにos.path.joinとos.chdirをしようとしたことを言及している必要がありますが、ファイルはとにかくファイルに印刷されます。どのような解決策やアプローチに修正するか?ここで私はそれを試してみました方法です:

tmppath = "C:/temp" 
tmp = os.path.join(tmppath,fname[0]+ft) 
file = open(tmp, 'w') 
+1

最後のスニペットをスタンドアロンスクリプトとして試しましたか?それは動作するはずです。 –

答えて

0

あなたの質問は細部に少し短いですが、私はfnameQFileDialogで返されるタプルで、そのためfname[0]は、元のファイルの絶対パスであることを推測しています。今、あなたはos.path.joinであることを使用しようとすると何が起こるか見て

>>> fname[0] 
'C:\\myfolder\\file.txt' 

>>> tmppath = 'C:\\temp' 
>>> os.path.join(tmppath, fname[0]) 
'C:\\myfolder\\file.txt' 

何もあなたがfname[0]を表示するのであれば、次のように表示されます!結論:2つのアブソリュートパスを結合しようとすると、元のパスは変更されません。今、あなたはあなたのファイルを保存するには、この新しいパスを使用することができます

>>> basename = os.path.basename(fname[0]) 
>>> basename 
'file.txt' 
>>> os.path.join(tmppath, basename) 
'C:\\tmp\\file.txt' 

:あなたが代わりに行うために必要なのは、元のパスのベース名を取り、そしてあなたはそれを保存したいフォルダに参加さであります正しい場所に。

0

あなたがちょうどパスなしでファイル名を指定した場合、完全なファイルパス

​​

を提供する必要があり、それは現在の作業ディレクトリを使用しますが、たISNあなたの実行しているpythonスクリプトが置かれているディレクトリは、必ずです。これは、スクリプトを起動したディレクトリになります。この場合

C:\Users\admin> python C:\path\to\my_script.py 

、現在の作業ディレクトリはC:\Users\admin、ないC:\path\toです。

+0

彼のポストに最後のコードスニペットが見えましたか? –

関連する問題