2016-07-03 5 views
-1

pythonで特定の行を上書きするのに問題がある3.5.1私はそこに解決策があることを知っていますが、外部モジュールを使用しているか、pythonで特定の行を編集する3.5.1

そこにコード行がありますか?ここ はイムが探しものです:あなたは、テキストファイル内の単一の行を置き換えたい

from time import sleep 
import os 
#functions 
def pause(): 
    pause = input("Paused press <ENTER> to continue") 
print("attempting to open workspace......") 
# 

Fo = open("work1.txt", 'r+')#opens the file 
print("workspace opened") 
#mainloop :D 
def Mainloop(): 
    global Fo 
    Fo.close() 
    Fo = open("work1.txt", 'r+') 
    os.system('cls') 
    print(''' 

''') 
    print (" ======") 
    print (" Read") 
    print (" Write") 
    print (" ======") 
    print("") 
    INP = input(' >') 
    if INP == "Read": 
     Hm = input("how much?") 
     print("") 
     if Hm == 'All': 
      print(Fo.read()) 
     else: 
      print(Fo.read(int(Hm))) 
     sleep(2) 
     pause() 
     os.system('cls') 
     Mainloop() 
    if INP == "Write": 
     TextToAdd = input("Text to Write: ") 
     Fo.write(TextToAdd) 
     os.system('cls') 
     Mainloop() 
    else: 
     print('Not avaliable') 
     sleep(2) 
     os.system('cls') 
     Mainloop() 

Mainloop() 
pause() 
+1

このコードは実際に問題に関連していますか?一般に、「特定の行を編集する」ことはできません*、最も簡単なことは、ファイルを読み込み、メモリ内で変更して再度書き出すことです。 – jonrsharpe

答えて

0

:ここFile.write(「ここにテキストを挿入」、「上書きするライン」)

が私のコードです別の行で?

for line in open(filename): 
     if line.rstrip('\n') == search_pattern: 
      sys.stdout.write('%s\n' % replacement) 
     else: 
      sys.stdout.write('%s' % line) 

sys.stdout.write()の代わりに、たとえば、

重要な考え方は、最初に必要な入力(検索パターン、置換文字列)を取得してから、ファイルを1行ずつ繰り返します。

溶液特性:

  • 低メモリ使用量(使用すると、メモリ内にのみ単一のラインを保つよう)
  • O(n)のランタイム - 行以上のファイルは、長くこのアプローチは
  • をとりました

また、ファイルのサイズが小さいことが保証されている場合は、内容を文字列に読み込んで、str.replace()を使用して検索する行を置き換えることができます。

関連する問題