簡體   English   中英

如何通過Python替換文本文件中的零件?

[英]How should I replace parts from a text file through Python?

好的,伙計們,這是交易:

我一直在嘗試使用Python(3.3),試圖創建一個python程序,該程序能夠為游戲中的武器生成隨機名稱,並替換舊名稱(位於文本文件中)。 這是我的功能:

def ModifyFile(shareddottxt):
  global name
  a = open(str(shareddottxt) , 'r')
  b = a.read()
  namefix1 = '''SWEP.PrintName          = "'''
  namefix2 = '''"               //sgaardname'''
  name1 = b.find(namefix1) + len(namefix1)
  name2 = b.find(namefix2, name1)
  name = name + b[name1:name2]        ## We got our weapon's name! Let's add the suffix.
  c = open((shareddottxt + ".lua"), 'r+')
  for line in b:
    c.write(line.replace(name, (name + namesuffix)))
  c.close()
  a.close

如您所見,我首先打開我的文本文件以找到武器的名稱。 之后,我嘗試創建一個新文件並從舊文件中復制內容,同時將武器名稱替換為(名稱+名稱后綴)。 但是,調用該函數后,我什么也沒得到。 沒有任何文件。 即使我確實將文件手動添加到文件夾,它也不會更改。 完全沒有

名稱后綴是通過早期的另一個函數生成的。 將其另存為全局變量。

另外,我的文本文件很大,但是我要編輯的位是:

SWEP.PrintName          = "KI Stinger 9mm"     //sgaardname 

預期結果:

SWEP.PrintName          = "KI Stinger 9mm NAMESUFFIX"     //sgaardname  

伙計們,我在哪里弄糟?

像這樣的東西更pythonic。

def replace_in_file(filename, oldtext, newtext):
    with open(filename, 'r+') as file:
        lines = file.read()
        new_lines = lines.replace(oldtext, newtext)
        file.seek(0)
        file.write(new_lines)

如果您不想替換該文件

def replace_in_file(filename, oldtext, newtext):
    with open(filename, 'r') as file, open(filename + ".temp", 'w') as temp:
        lines = file.read()
        new_lines = lines.replace(oldtext, newtext)
        temp.write(new_lines)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM