【问题标题】:Change Saving-Path - Python更改保存路径 - Python
【发布时间】:2016-04-05 21:24:11
【问题描述】:

我正在尝试保存使用“打开”功能创建的文件。 好吧,我几乎尝试了所有方法来更改目录,但没有任何效果。该文件总是保存在我之前读过的文件的文件夹中。

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

【问题讨论】:

  • 您是否尝试过将最后一个小 sn-p 作为独立脚本?它应该可以工作。

标签: python python-3.x pyqt5


【解决方案1】:

您的问题在细节上有点短,但我猜fnameQFileDialog 返回的元组,所以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'

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

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-21
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多