如何通过Python替换文本文件中的部分?

2024-04-20 04:27:13 发布

您现在位置: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

如你所见,我首先打开我的文本文件找到武器的名字。之后,我尝试创建一个新文件并复制旧文件的内容,同时替换武器的名称(name+namesuffix)。但是,在调用函数之后,我什么也没有得到。没有任何文件。即使我手动将文件添加到文件夹中,它也不会更改。完全。你知道吗

Namesuffix是早期通过另一个函数生成的。它保存为全局变量

另外,我的文本文件很大,但我要编辑的是:

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

预期结果:

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

我在哪搞砸了,伙计们?你知道吗


Tags: 文件name名称openfind文本文件伙计name1
1条回答
网友
1楼 · 发布于 2024-04-20 04:27:13

像这样的东西更像Python。你知道吗

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)

相关问题 更多 >