+ -
当前位置:首页 → 问答吧 → 为什么不能修改文件内容

为什么不能修改文件内容

时间:2010-12-03

来源:互联网

Python code

import os
FileName = "usbb.txt"
CurrentPath = os.getcwd()
ff = open(FileName,'r+')
while True:
    line = ff.readline()
    if not line: break
    if line[:9]=="OutputDir":
        mydir=line.split("=")
        mydir[1] = CurrentPath
        line = '='.join(mydir)
        ff.write(line)
        ff.close()
        break;


各位大哥,帮忙看下,为什么不能修改文件? 为什么写都写不进去啊

作者: mapoor   发布时间: 2010-12-03

刚学, 办法扯是扯了点,但解决了。
Python code

import os
FileName = "usbb.iss"
CurrentPath = os.getcwd()
ff = open(FileName,'r')
lines = ff.readlines();
ff.close()
index = 0
for line in lines:
    if line[:9]=="OutputDir":
        mydir=line.split("=")
        mydir[1] = CurrentPath+'\n'
        lines[index] = '='.join(mydir)
        break;
    else:
        index += 1
fw = open('usbb.iss','w')
fw.writelines(lines)
fw.close()

作者: mapoor   发布时间: 2010-12-03

代码意图不明,如果line[:9]等于"outputdir"的那行出现在空行之下,那你永远写不进去,
因为if not line: break你已经跳出去了。你是不是想continue?

作者: I_NBFA   发布时间: 2010-12-03

说错了,不是空行是空文件。。。。。。

作者: I_NBFA   发布时间: 2010-12-03

应该没问题的,我这拿OutputDir=2222222测试写入ok

作者: I_NBFA   发布时间: 2010-12-03

因为你是open(FileName,'r+') 'r'read读的方式打开的文件,

你以'a+'追加,'w+'重写打开就可以写文件了

但是你的需求貌似是替换以“OutputDir”结尾的字符串的第一个“=”号前面的路径为当前路径?

你可以这样:先存到list里面,再去写文件

Python code

import os
FileName = "usbb.txt"
CurrentPath = os.getcwd()
ff = open(FileName,'r+')
temp_list = []
while True:
    line = ff.readline()
    if not line: 
        ff.close()
        break
    if line[:9]=="OutputDir":
        mydir=line.split("=")
        mydir[1] = CurrentPath
        line = '='.join(mydir)
    temp_list.append(line)

open(FileName ,"w").write("\n".join(temp_list))

作者: amu9900   发布时间: 2010-12-03

我晕。。上厕所回来就已经排5楼了。。

作者: amu9900   发布时间: 2010-12-03

引用 5 楼 amu9900 的回复:
因为你是open(FileName,'r+') 'r'read读的方式打开的文件,

你以'a+'追加,'w+'重写打开就可以写文件了

但是你的需求貌似是替换以“OutputDir”结尾的字符串的第一个“=”号前面的路径为当前路径?

你可以这样:先存到list里面,再去写文件


Python code

import os
FileName = "usbb.txt"
……

w+和r+都是读写,只不过后者不清空文件,相反w+打开清空文件就没的内容可读了。

作者: I_NBFA   发布时间: 2010-12-03

现在奇怪的是不是替换不替换,而是LZ表示"为什么写都写不进去啊"。

作者: I_NBFA   发布时间: 2010-12-03

最讨厌一边读一边写。

作者: iambic   发布时间: 2010-12-03