Python文件路径和名称检索

Posted

技术标签:

【中文标题】Python文件路径和名称检索【英文标题】:Python file path and name retrieval 【发布时间】:2017-04-13 22:19:22 【问题描述】:

好的,所以我在 python 中创建了一个另存为按钮,并且想知道如何从保存它的位置检索文件路径。我还想知道在保存期间是否更改了名称如何知道那是什么。如果我尝试在不同的 .py 文件中调用文件名,我会收到错误代码。按钮代码如下

谢谢

import tkinter, tkinter.constants, tkinter.filedialog

class tkFile(tkinter.Frame):

    def __init__(self, root):

        tkinter.Frame.__init__(self, root)
        button_opt = 'fill': tkinter.constants.BOTH, 'padx': 5, 'pady': 5
        tkinter.Button(self, text='Save As',command=self.asksaveasfilename).pack(**button_opt)

        self.file_opt = options = 
        options['filetypes'] = [('all files', '.*'), ('csv files', '.csv')]
        options['initialfile'] = 'data.csv'
        options['parent'] = root

    def asksaveasfilename(self):
        filename = tkinter.filedialog.asksaveasfilename(**self.file_opt)

        if filename:
            return open(filename, 'w')

if __name__=='__main__':
    root = tkinter.Tk()
    tkFile(root).pack()
    root.mainloop()

我想调用这个名字的代码如下。具体来说,我希望将名称从另存为按钮调用到另一个文件。错误代码将 self 声明为未定义。

name = savePathButton.tkFile.asksaveasfilename(self)

name 'self' is not defined

【问题讨论】:

这个问题有点混乱。您将获得用于打开文件的文件名。为什么不把它保存起来以备日后使用呢? 稍后在程序中使用时,我无法返回文件名。这更像是一个创建文件按钮而不是另存为按钮。 你想在这里做什么? filename = tkinter.filedialog.asksaveasfilename(**self.file_opt) 为您提供用户想要保存到的 filename。为什么使用return open(filename, 'w')?为什么不只是return filename,然后在稍后的函数调用with open(filename, 'w') 中写入打开/创建和写入文件? 当我返回文件名并尝试稍后调用它时,我将什么作为变量而不是 self.如果我把 self 它说它未定义使我无法调用文件名。 【参考方案1】:

您可以import os,并使用os.path.dirname(os.path.realpath(__file__)) 检索文件位置。

对于实际的文件名,您可以使用os.listdir(os.getcwd()),它将返回目录中的文件名列表。

【讨论】:

以上是关于Python文件路径和名称检索的主要内容,如果未能解决你的问题,请参考以下文章

Fastlane 从标识符中检索配置文件路径

IPython Notebook 打开文件对话框(检索完整路径)

使用File类创建简单的文件目录检索小工具

在目录中搜索文件并列出它们的名称和路径 - 两个级别的子文件夹

python获取指定路径下多层目录内的所有文件全路径及文件名称

python教程:模块的搜索路径