python - 选择多个文件。 Python

标签 python file select

我创建了这个搜索和替换程序。 但我想对其进行更改,因此我可以搜索并替换为 一次多个文件。 现在,有没有办法让我有 一次选择多个文件的选项 来 self 选择的任何文件夹或目录。

下面给出了帮助我使用文件对话框窗口选择文件的代码,但给出了错误。你能帮我改正吗? 完整的回溯错误是:

Traceback <most recent call last>:
 File "replace.py", line 24, in <module>
 main()
File "replace.py", line 10, in main
 file = tkFileDialog.askopenfiles(parent=root,mode='r',title='Choose a file')
File "d:\Python27\lib\lib-tk\tkFileDialog.py",line 163, in askopenfiles
   ofiles.append(open(filename,mode))
IOError: [Errno 2] No such file or directory: u'E'

这是代码:我终于让这段代码起作用了,我将“file”更改为“filez”,将“askopenfiles”更改为askopenfilenames。而且我能够替换我选择的文件中的单词。唯一的问题是当我选择 2 个文件时它不起作用。也许我应该添加一个循环以使其适用于多个文件。但是,这是一种反复试验,我希望能够真正知道它为什么起作用。有没有一本书或其他东西可以帮助我完全理解这个 tkinter 和文件对话框的东西?无论如何,我已经更改了下面的代码以显示现在的工作代码:

#replace.py
import string
def main():
    #import tkFileDialog
    #import re
    #ff = tkFileDialog.askopenfilenames()
    #filez = re.findall('{(.*?)}', ff)
    import Tkinter,tkFileDialog
    root = Tkinter.Tk()
    filez = tkFileDialog.askopenfilenames(parent=root,mode='r',title='Choose a file')
#filez = raw_input("which files do you want processed?")
f=open(filez,"r")
data=f.read()
w1=raw_input("what do you want to replace?")
w2= raw_input("what do you want to replace with?")
print data
data=data.replace(w1,w2)
print data
f=open(filez,"w")
f.write(data)
f.close()


main()

编辑:下面的回复之一让我了解了文件对话框窗口,现在我可以使用 tkinter 窗口选择多个文件,但我无法继续进行替换。它给出了错误。 我尝试了不同的方式来使用文件对话框,不同的方式给出了不同的错误。我没有删除其中一种方式,只是在前面打了一个井号作为评论,大家可以看看哪个更好。

最佳答案

也许你应该看看 glob module , 它可以很容易地找到所有匹配简单模式(例如 *.txt)的文件。

或者,更简单但不太用户友好,您当然可以将输入的文件名 filez 视为列表,用空格分隔文件名:

for fn in filez.split():
  # your code here, replacing filez with fn

关于python - 选择多个文件。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579235/

相关文章:

java - 迭代文件中的行并在每行末尾添加空值

c - 在使用 C 的 Linux 中,如何将整个环境写入文件?

MySQL 选择以句号/句点结尾的行

MySQL同一个id获取三张表的数据

python - 旋转图像并裁剪黑色边框

Python Selenium 使用 ChromeDriver 下载图像(jpeg、png)或 PDF

python - 为什么 docopt 失败并显示 docopt.DocoptLanguageError : unmatched '[' ?

Windows 上的 Python select.select() 错误 10022

java - 如何将字节数组写入 Android 中的文件?

mysql - 在 mysql 中,如何连接第二个表并获取具有最新日期的行?