更改保存路径 - 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'
现在您可以使用这个新路径将文件保存在正确的位置。
我正在尝试保存我使用 "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'
现在您可以使用这个新路径将文件保存在正确的位置。