【发布时间】:2016-02-12 04:04:34
【问题描述】:
我正在编写我的第一个脚本:尝试从文件夹(标题为 Thing_XXfilename.png)中获取所有文件名,删除一些初始字符(Thing_XX)以及它们的扩展名,然后将它们一个接一个地插入到重复的代码行。
我尝试了几十种变体,但由于某种我无法理解的原因,输出正在迭代每个原始文件名的字符(替换没有影响)并将它们一个接一个地插入到代码中。
nf0 = 'Events.OnGameStart.Add( function ()\n\tif MyScript then\n'
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()
这应该会产生:
if MyScript.Thing.XXfilename1 then
else
MyScript.Thing.XXfilename1 = {"Misc.", nil, nil, "filename1", "MyMod.XXfilename1", "Thing_XXfilename1", nil, nil, nil};
end
但结果却是这样:
if MyScript.Thing.XXT then
else
MyScript.Thing.XXT = {"Misc.", nil, nil, "T", "MyMod.XXT", "Thing_XXT", nil, nil, nil};
end
此处显示的字母“T”是第一个文件名的第一个字母(然后对所有文件名的每个字母重复令人作呕)。
【问题讨论】:
-
您确定
C:\Users\Myuser\Textures不是空目录吗? -
绝对!我有一个 Python 吐出的 6MB textures.lua 来证明它:-P 虽然我应该使用像 %username% 这样的相对路径,但无法让它工作。
-
你应该尝试使用 python 的字符串格式化功能。它会让你的代码更容易阅读。
-
@veggie1:R Nar 打败了我。很高兴他这样做了,我不确定如何使用该格式...下次我会寻找该选项。
-
下一次,只需突出显示您要格式化的所有代码,然后按 ctrl+K :)
标签: python python-3.x replace lua filenames