我正在尝试批量处理Python中的一些文件
我需要在文件夹中的html文件列表的末尾附加一个字符串。
所以步骤是:
我已经看过堆栈交换的一些解决方案,但我一直在收到语法错误。
有一段时间没有使用python因此有点生锈。
import os
for file in os.listdir("c:\Users\a\Desktop\New"):
if file.endswith(".html"):
appendString = "\ add this string to end of file"
appendFile.write = (appendString)
apendFile.close()
我确信这很简单。
请多多指教!
**道歉我的代码有错误,因为我打开了很多文件,这是漫长的一天!
编辑: 此外,文件中已包含需要保留的内容。 我想在每个文件的底部添加示例文本。
答案 0 :(得分:1)
您从使用file
转到appendFile
,但您的代码并未显示您已对其进行设置。
import os
for file in os.listdir("c:\\Users\\a\\Desktop\\New"):
if file.endswith(".html"):
appendString = "\ add this string to end of file"
with open(file, 'a') as appendFile:
appendFile.write(appendString)
答案 1 :(得分:1)
你的代码遗漏了几件事(缩进,appendFile的定义,加上拼写错误)。
怎么样:
import os
for filename in os.listdir("c:\Users\a\Desktop\New"): # filename is a string
if filename.endswith(".html"): # notice the indent
appendFile = open(filename, 'a') # file object, notice 'a' mode
appendString = "\ add this string to end of file" # could be done out of the loop if constant
appendFile.write(appendString)
appendFile.close()
重要提示:最好不要将file
用作变量名,因为它也是python2.7中内置函数的名称(类似于open
)。
你也可以使用with
构造为你做结束(见Celeo的回答)。
答案 2 :(得分:0)
glob
为您提供了与给定的glob表达式匹配的文件路径列表。在您的情况下,您希望在某个目录中以.html
(即*.html
)结尾的任何内容。
一旦你获得了这些文件路径,那么向它们添加文本非常简单
import glob
import os
dirpath = 'directory/with/html/files'
appendStr = 'this string will be appended'
for fpath in glob.glob(os.path.join(dirpath, "*.html")):
with open(fpath, 'a') as outfile:
outfile.write(appendStr)