我正在尝试保存一个用“打开”功能创建的文件。 好吧,我几乎尝试了一切来改变目录,但没有任何作用。该文件总是保存在我之前读过的文件夹中。
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)")
文件类型(在单独的功能中)我通过勾选复选框设置文件类型,ft将设置为.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')
答案 0 :(得分:0)
您需要提供完整的文件路径
with open(r'C:\entire\path\to\file.txt', 'w') as f:
f.write('test')
如果您只提供没有路径的文件名,它将使用当前工作目录,该目录不一定是您运行的python脚本所在的目录。它将是您从中启动脚本的目录。
C:\Users\admin> python C:\path\to\my_script.py
在这种情况下,当前工作目录为C:\Users\admin
,而不是C:\path\to
。
答案 1 :(得分:0)
您的问题在细节上有点简短,但我猜测fname
是QFileDialog
返回的元组,因此fname[0]
是绝对路径原始文件。因此,如果您显示fname[0]
,您会看到如下内容:
>>> fname[0]
'C:\\myfolder\\file.txt'
现在看看当您尝试将其与os.path.join
一起使用时会发生什么:
>>> tmppath = 'C:\\temp'
>>> os.path.join(tmppath, fname[0])
'C:\\myfolder\\file.txt'
什么也没有!结论:尝试连接两个绝对路径只会返回原始路径不变。您需要做的是获取原始路径的 basename ,并将其加入要保存它的文件夹:
>>> basename = os.path.basename(fname[0])
>>> basename
'file.txt'
>>> os.path.join(tmppath, basename)
'C:\\tmp\\file.txt'
现在,您可以使用此新路径将文件保存在正确的位置。