我到处都找不到这个,如果我错过了,很抱歉。我有一个简单的程序,可以打开一个日志(比如log1.lg)并删除所有不包含关键字的行。然后它将它们抛出到第二个文件中,该文件被重命名为Log1。lg.清洁. 你知道吗
我实现这个的方法是使用操作系统重命名代码如下所示:
#define source and key words
source_log = 'Log1.lg'
bad_words = ['word', 'bad']
#clean up the log
with open(source_log) as orig_log, open('cleanlog.lg', 'w') as cleanlog:
for line in orig_log:
if not any9bad_word in line for bad_word in bad_words):
cleanlog.write(line)
#rename file and open in Notepad
rename = orig_log + '.clean'
new_log = os.rename("cleanlog.lg", rename)
prog = "notepad.exe"
subprocess.Popen(prog, new_log)
我得到的错误是:
File "C:\Users\me\Downloads\PythonStuff\stripMmax.py", line 23, in cleanLog
subprocess.Popen(prog, new_log)
File "C:\Python27\lib\subprocess.py", line 339, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
如果相关的话,我使用的是python2.7。我不明白为什么这不起作用,为什么它需要一个bufsize。我看到过其他例子,它是这样工作的,所以我想也许这个命令在2.7版中不能像我输入的那样工作?你知道吗
文档展示了如何使用引号中的实际文件名正确地使用它,但是正如您所看到的,我的文件包含在一个似乎会引起问题的变量中。提前谢谢!你知道吗
请参见这里的} 。
Popen
构造函数:^{Popen
的第二个参数是bufsize
。这就解释了你的错误。还要注意,os.rename
不返回任何内容,因此new_log
将是None
。改用rename
变量。你的电话应该是这样的:您可能还想等待创建的
Popen
对象:或者类似的。你知道吗
相关问题 更多 >
编程相关推荐