Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python文件操作_Python_File - Fatal编程技术网

python文件操作

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

我有一个目录/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”的第一个条目,并附加上述四行,保持其余文件不变

任何帮助都将不胜感激:)提前谢谢。

未经测试

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就可以了。谢谢你。谢谢你的剧本,鬼怪!!!