【发布时间】:2017-08-05 06:46:06
【问题描述】:
我在使用 glob、sys、re 和 os 模块的脚本时遇到了两个问题。该脚本枚举一个目录并在所有文件中搜索一个字符串。如果我将绝对路径分配给变量,它就会运行,但不执行正则表达式。我需要更改脚本以使用 sys.argv,以便用户可以在终端中指定路径(例如:./replace_students.py /home/alex/Documents/)。当我将 dirname 变量从 "dirname = "/home/alex/Documents/"" 更改为 "dirname = sys.argv[1:]" 时,出现错误
“TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到列表”。
我需要帮助解决错误并让正则表达式正常工作。
import os, glob, sys, re
#dirname = "/home/alex/Documents"
dirname = sys.argv[1:]
os.listdir(dirname)
for filename in glob.glob('*'):
with open(filename) as f:
contents = f.read()
if 'students' in contents:
contents = contents.replace(r" students", "pupils")
print contents
【问题讨论】: