更改保存路径 - Python

Change Saving-Path - Python

我正在尝试保存我使用 "open" 函数创建的文件。 好吧,我几乎尝试了所有方法来更改目录,但没有任何效果。该文件始终保存在我之前阅读过的文件的文件夹中。

 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')

您需要提供完整的文件路径

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

你的问题在细节上有点短,但我猜测 fname 是由 QFileDialog 编辑的元组 return,因此 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'

没有!结论:尝试连接两个 绝对 路径只会 return 原始路径不变。您需要做的是获取原始路径的 basename,并将其加入要保存的 folder 中:

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

现在您可以使用这个新路径将文件保存在正确的位置。