2017-07-11 46 views
0

我试图建立与以下功能的脚本来更新一个特定的位置在一个文件中的所有行,无法使用python

从用户接受输入,A)文件名B)特定位置 更新/修改c)新的价值

输入文件将是如下,

uuuuuuuuuuuuuuuuuuuuuuuu
iiiiiiii HHH HHHH IIII
IIIIIIIII iiiiiiiiiiiiiiii tttttttttttttttttt

我能够做到上述的文件的第一行只(不考虑来自用户输入)

import os,mmap 
InputFile=os.open("testt.txt",os.O_RDWR) 
Line=mmap.mmap(InputFile,0) 
Line[4:9]="44444" 
os.close(InputFile) 

当我尝试更新第二相同行Line=mmap.mmap(InputFile,1),遇到下面的错误,

Traceback (most recent call last): 
    File "C:/Python27/Scripts/Test.py", line 10, in <module> 
    Line[4:9]="44444" 
IndexError: mmap slice assignment is wrong size 
>>> 

期待建议/帮助获得硫完成了。

+1

是否有您所使用'os.open',而不是内置的函数'开()' –

+0

@Professor_Joykill一个原因:没有理由这样.. :) – cbk

+0

可以请您详细说明您想要做什么? – babygame0ver

回答

0

考虑文件的abc.txtmain.py文件在同一目录下的abc.txt

运行的内容main.py脚本前:

aaaaaaaaa 
bbbbbbbbb 
ccccccccc 

内容main.py

line = input() 
first_position = input() 
second_position = input() 
datav = raw_input() 
with open('abc.txt','r+') as f: 
    data = map(str,f.read().split('\n')) 
    change = data[line-1][:first_position] + ''.join(datav) + data[line-1][second_position:] 
    data[line-1] = change 
    with open('abc.txt','w+') as t: 
     for i in data: 
      t.write(i+'\n') 

**Custom input** 

1 

2 

7 

bbbbbb 

**Sample output** as expected it is saved in the file abc.txt: 


aabbbbbaa 

bbbbbbbbb 

ccccccccc 
+1

令人惊叹的是,它按照要求工作:) ...感谢一吨! – cbk

+0

赞赏亲爱的 – babygame0ver

+0

如何从excel中为10组数据传递输入(Line,FirstPosition,SecondPosition和NewValue)?如何使用任何excel模块(如'openpyxl'或'pandas')工作? – cbk