我真的是Python新手。 我在各种在线资源和一些有才华的熟人的帮助下创建了一个脚本,但是我完全碰壁了。我希望这里有一些能帮助解决这个问题的人才。
我有一个有效的脚本,但需要在根文件夹上方的每个文件夹1级(仅)上运行。它绝对不能低于。 从根目录开始,有超过6000个子文件夹,所有这些子文件夹都有自己的文件,需要在该文件上运行脚本。 例如
ROOT
---------MODEL 1
------FILE.XMODEL_EXPORT
---------MODEL 2
------FILE.XMODEL_EXPORT
---------MODEL 3
------FILE.XMODEL_EXPORT
以此类推。
这是在这些文件上运行的代码的简化版本。
import glob
import os
command = "export2bin.exe /s *.xmodel_export"
os.system(command)
dirpath = os.path.split(os.getcwd())[1]
# Put all files with XMODEL_EXPORT extension into variable "myFiles"
myFiles = glob.glob('*.XMODEL_EXPORT')
for file in myFiles:
filename = file.rstrip('_LOD0.XMODEL_EXPORT') # strip the text off the end of the variable. This becomes the model name in APE.
# create the gdt filename with extension
filename_with_extension = filename + '.gdt'
# GDT CREATION STARTS HERE # ------------------------------------------------------------------------
gdt = '{\r'
gdt += '"'
gdt += filename
gdt += '" '
gdt += '( "xmodel.gdf" \r'
gdt += ' {\r'
gdt += ' "arabicUnsafe" "0"\r'
gdt += ' "autogenLod4" "0"\r'
gdt += ' "autogenLod4Percent" "13"\r'
gdt += ' "autogenLod5" "0"\r'
gdt += ' "autogenLod5Percent" "13"\r'
gdt += ' "filename" "'
gdt += dirpath
gdt += '\\\\'
gdt += 'xmodels'
gdt += '\\\\'
gdt += filename
gdt += '\\\\'
gdt += filename
gdt += '.XMODEL_BIN"\r'
gdt += ' }\r'
gdt += '}\r'
# GDT CREATION ENDS HERE # ------------------------------------------------------------------------
#save the GDT into the gdt file
with open(filename_with_extension, 'w') as gdtfile:
gdtfile.write(gdt)
我需要在这里实现的是在右键单击Shell菜单上获得此功能。 (这很容易)
我应该能够右键单击ROOT文件夹,它将在子文件夹中移动,找到XMODEL_EXPORT文件,将其转换为XMODEL_BIN文件,然后将GDT文件写入与刚刚处理过的文件相同的目录。
目前,我可以输入带有XMODEL_EXPORT文件的任何目录,并且代码可以正常运行。一旦我回到1或2级,它就不再起作用。
我希望我已经足够描述性了。
谢谢。
答案 0 :(得分:0)
如果您不在同一文件夹中,该代码将不起作用,原因是默认情况下,glob.glob
仅检查您所在文件夹中的文件,而不检查子文件夹。
要解决此问题,请更改此行:
myFiles = glob.glob('*.XMODEL_EXPORT')
此行:
myFiles = glob.glob('**/*.XMODEL_EXPORT', recursive=True)
**/*
表示接受包含子文件夹的路径名,而recursive=True
也表示检查子文件夹。
希望这会有所帮助。
编辑:
我从here那里得到了信息