Python批处理附加到某个类型的文件 - 在单个目录中

时间:2015-03-11 19:49:23

标签: python batch-file

如果已经证明该怎么做,请道歉。

我正在尝试批量处理Python中的一些文件

我需要在文件夹中的html文件列表的末尾附加一个字符串。

所以步骤是:

  1. 打开文件夹
  2. 中的所有文件
  3. 附加一个字符串 - 在每个文件的底部添加字符串)
  4. 关闭文件
  5. 我已经看过堆栈交换的一些解决方案,但我一直在收到语法错误。

    有一段时间没有使用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()
    

    我确信这很简单。

    请多多指教!

    **道歉我的代码有错误,因为我打开了很多文件,这是漫长的一天!

    编辑: 此外,文件中已包含需要保留的内容。 我想在每个文件的底部添加示例文本。

3 个答案:

答案 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)

Docs link for file I/O

答案 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)