替换字符串的一部分并添加内容没有产生预期的结果。

我正在编写我的第一个脚本:尝试从一个文件夹中提取所有文件名(名称为“Thing_XXfilename.png”),删除一些初始字符(“Thing_XX”),以及它们的扩展名,然后逐个将它们插入到重复的代码行中。

我尝试了几十种变化,但是,出乎意料的是,输出正在迭代每个原始文件名的字符(没有替换的效果),并将它们一个接一个地插入到代码中。

nf1 =“ if MyScript.Thing.XX” 
nf2 =“ then \ n \ t \ telse \ n \ t \ t \ tMyScript.Thing.XX” 
nf3 =“ = {“Misc。“,nil,nil,” 
nf4 =“ „,“MyMod.XX” 
nf5 =“ „,“Thing_XX” 
nf6 =“ „,nil,nil,nil};\ n \ t \ t \ tend \ n“ 
nfn =“ end \ nend)” 
import os 
f = open(“ textures.lua”,“ w”) 
f.write(nf0) 
for files in os.listdir(r'C:\ Users \ Myuser \ Textures'):
    for filename in files:
        line = filename.replace('Thing_XX''') 
        line = filename.replace('.png''') 
        f.write(nf1+ filename + nf2+ filename + nf3+ filename + nf4+ filename + nf5+ filename + nf6) 
f.write(nfn) 
f.close()```

这应该产生:

如果MyScript.Thing.XXfilename1则 其他 MyScript.Thing.XXfilename1 = {"杂项。",nil,nil,“filename1”,“MyMod.XXfilename1”,“Thing_XXfilename1”,nil,nil,nil}; 结束


但结果是:

如果MyScript.Thing.XXT则 其他 MyScript.Thing.XXT = {"杂项。",nil,nil,“T”,“MyMod.XXT”,“Thing_XXT”,nil,nil,nil}; 结束

```

这里显示的字母“T”是第一个文件名的第一个字母(然后对所有文件名的每个字母重复出现)。

点赞
用户5220572
用户5220572
import os

base_string = (
    'something something {filename}\n'
    'something else {filename} blah blah')

output = ''

f = open("textures.lua", "w")
for filename in os.listdir(r'C:\Users\Myuser\Textures'):
    filename.replace('Thing_XX', '')
    filename.replace('.png', '')
    output += base_string.format(filename=filename)

output = (
    '顶部\n'
    '{output}\n'
    '底部').format(output=output))

f.write(output)
f.close()
2015-11-11 04:31:20
用户5530155
用户5530155

你正在使用双重循环,而只需要一个循环。

f = open("textures.lua", "w")
f.write(nf0)
for filename in os.listdir(r'C:\Users\Myuser\Textures'):
    line = filename.replace('Thing_XX', '')
    line = line.replace('.png', '')   ## also need to change this
    f.write(nf1 + line + nf2 + line + nf3 + line + nf4 + line + nf5 + line + nf6)
2015-11-11 04:32:53
用户5396645
用户5396645

你可以使用以下方法来获取用户的主目录:

os.getenv("HOME")

例如:

print os.getenv("HOME")

将返回:

c:\users\username
2015-11-11 04:50:19