python文件操作
我有一个目录/tmp/dir,有两种文件名 /tmp/dir/abc-something-server.log /tmp/dir/xyz-something-server.log 及 /tmp/dir/something-client.log 我需要在以“client.log”结尾的文件中附加几行(这些行是常量) 第1行 第2行 第3行 第4行 将这四行附加到以“client.log”结尾的文件中 是的,我发现open()“a”选项将提供所需的结果。但是如何选择正确的文件,即排除server.log并选择client.log 对于以“server.log”结尾的文件 我需要在一个关键字后面附加一个词,比如“在这个之后”。 “server.log”文件有多个“After this”条目,我需要找到“After this”的第一个条目,并附加上述四行,保持其余文件不变 任何帮助都将不胜感激:)提前谢谢。未经测试python文件操作,python,file,Python,File,我有一个目录/tmp/dir,有两种文件名 /tmp/dir/abc-something-server.log /tmp/dir/xyz-something-server.log 及 /tmp/dir/something-client.log 我需要在以“client.log”结尾的文件中附加几行(这些行是常量) 第1行 第2行 第3行 第4行 将这四行附加到以“client.log”结尾的文件中 是的,我发现open()“a”选项将提供所需的结果。但是如何选择正确的文件,即排除server
import os,glob,fileinput
root="/tmp"
path=os.path.join(root,"dir")
alines=["line 1\n","line 2\n","line 3\n","line 4\n"]
os.chdir(path)
# for clients
for clientfile in glob.glob("*.client.log"):
data=open(clientfile).readlines()
data.append(alines)
open("temp","w").write(''.join(data))
os.rename("temp",clientfile)
for svrfile in glob.glob("*.server.log"):
f=0
for line in fileinput.FileInput(svrfile,inplace=1):
ind=line.find("After-this")
if ind!=-1 and not f:
line=line[:ind+10] + ''.join(alines) + line[ind+10:]
f=1
print line
它不是“插入”而不是“附加”吗?附加文件是可能的,但我不相信在中间插入某种临时拷贝。如果文件仍然由客户机或服务器打开,在复制时可能会发生奇怪的事情。是的。对于Server。日志文件,它插入中间。不附加。没有进程仍在使用这些文件,所以这不会是问题;清楚您的目标和原因。它显示类型错误…如何修复此问题?>打开(“temp”,“w”).write(“”.join(data))>TypeError,我想有一个输入错误---是不是>行=行[:ind+10]+“”。join(alist)+行[ind+10:]还是>行=行[:ind+10]+“”。join(alines)+行[ind+10:]参见编辑
data=data.append(alines)
应该只是data.append(alines)
。是的,这是另一个的拼写错误。你可以测试一下,对吗?用解释器运行它并找出答案。我已经像你说的那样更改了文件,这次我得到了不同的错误-文件“File_mani.py”,第9行,在open(“temp”,“w”)。write(“”.join(data))TypeError:sequence item 64:预期字符串,list founddo data+=alines,而不是使用append,append将alines作为类型列表的单个元素进行追加。是的,添加数据+=alines就可以了。谢谢你。谢谢你的剧本,鬼怪!!!