首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改储蓄-路径- Python

更改储蓄-路径- Python
EN

Stack Overflow用户
提问于 2016-04-05 21:24:11
回答 2查看 7K关注 0票数 0

我正在尝试保存一个文件,我用"open“函数创建了这个文件。我尝试了几乎所有的方法来改变目录,但是都没有用。该文件总是保存在我的文件的文件夹中,我以前读过这个文件夹。

代码语言:javascript
复制
 file = open(fname[0] + ft, 'w')
 file.write("Test")
 file.close()

所以这很简单,但是我要补充什么,才能改变创造的道路呢?

单个函数中的“文件”对话框:

代码语言:javascript
复制
global fname
fname = QFileDialog.getOpenFileName(None, 'Please choose your File.',"C:\\Program Files", "Text-Files(*.txt)") 

文件类型(在一个单独的函数中也是如此),我通过勾选复选框来设置文件类型,ft将设置为.py或.pyw

代码语言:javascript
复制
if self.exec_py.isChecked() == True:
  global ft
  ft = ".py"

我应该说我已经尝试过os.path.join和os.chdir了,但是文件无论如何都会被打印出来。有什么解决办法或方法来解决这个问题?下面是我尝试的方法:

代码语言:javascript
复制
tmppath = "C:/temp"
tmp = os.path.join(tmppath,fname[0]+ft)
file = open(tmp, 'w')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-05 22:48:11

您的问题在细节上有点简短,但我猜想fnameQFileDialog返回的元组,因此fname[0]是原始文件的绝对路径。因此,如果您显示fname[0],您将看到如下所示:

代码语言:javascript
复制
>>> fname[0]
'C:\\myfolder\\file.txt'

现在,看看当您尝试在os.path.join中使用它时会发生什么

代码语言:javascript
复制
>>> tmppath = 'C:\\temp'
>>> os.path.join(tmppath, fname[0])
'C:\\myfolder\\file.txt'

没什么!结论:尝试连接两个绝对路径只需返回原始路径不变。您需要做的是获取原始路径的basename,并将其连接到要保存它的文件夹中:

代码语言:javascript
复制
>>> basename = os.path.basename(fname[0])
>>> basename
'file.txt'
>>> os.path.join(tmppath, basename)
'C:\\tmp\\file.txt'

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

票数 0
EN

Stack Overflow用户

发布于 2016-04-05 21:42:30

您需要提供完整的filepath

代码语言:javascript
复制
with open(r'C:\entire\path\to\file.txt', 'w') as f:
    f.write('test')

如果您只是提供一个没有路径的文件名,它将使用当前的工作目录,它不一定是您运行的python脚本位于的目录。它将是您启动脚本的目录。

代码语言:javascript
复制
C:\Users\admin> python C:\path\to\my_script.py

在这种情况下,当前的工作目录是C:\Users\admin,而不是C:\path\to

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36437326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档