我创建了这个搜索和替换程序。但我想对其进行更改,因此我可以一次搜索和替换多个文件。现在,有没有办法让我可以从我选择的任何文件夹或目录中一次选择多个文件。
下面给出了帮助我使用文件对话框窗口选择文件的代码,但给出了错误。你能帮我改正吗?完整的回溯错误是:
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 窗口选择多个文件,但我无法继续进行替换。它给出了错误。我尝试了不同的方式来使用文件对话框,不同的方式给出了不同的错误。我没有删除其中一种方式,而是在前面放了一个井号,以便发表评论,所以你们可以看看哪个更好。