2017-07-11 43 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