我做了一个简单的程序来测试它。它只是找到特定字符串的任何实例,并用新字符串替换它。我想要做的是在我的整个目录中逐个文件运行它。
def replace(directory, oldData, newData):
for file in os.listdir(directory):
f = open(file,'r')
filedata = f.read()
newdata = filedata.replace(oldData,newData)
f = open(file, 'w')
f.write(newdata)
f.close()
但是我一直收到一条错误消息,告诉我其中一个文件在我的目录中不存在,即使它确实存在。我无法弄清楚为什么它会告诉我。
答案 0 :(得分:1)
os.listdir()
返回一个字符串列表,与终端命令ls
非常相似。它列出了文件的名称,但不包含目录的名称。您需要自己添加os.path.join()
:
def replace(directory, oldData, newData):
for file in os.listdir(directory):
file = os.path.join(directory, file)
f = open(file,'r')
filedata = f.read()
newdata = filedata.replace(oldData,newData)
f = open(file, 'w')
f.write(newdata)
f.close()
我不建议file
作为变量名,因为它与内置类型冲突。此外,建议在处理文件时使用with
块。以下是我的版本:
def replace(directory, oldData, newData):
for filename in os.listdir(directory):
filename = os.path.join(directory, filename)
with open(filename) as open_file:
filedata = open_file.read()
newfiledata = filedata.replace(oldData, newData)
with open(filename, 'w') as write_file:
f.write(newfiledata)
答案 1 :(得分:1)
尝试这种方式:
ICollection<Clip> Clipcol = new ICollection<Clip>;
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol);