在子文件夹中运行脚本

时间:2019-12-30 16:27:44

标签: python windows

我真的是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级,它就不再起作用。

我希望我已经足够描述性了。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您不在同一文件夹中,该代码将不起作用,原因是默认情况下,glob.glob仅检查您所在文件夹中的文件,而不检查子文件夹。

要解决此问题,请更改此行:

myFiles = glob.glob('*.XMODEL_EXPORT')

此行:

myFiles = glob.glob('**/*.XMODEL_EXPORT', recursive=True)

**/*表示接受包含子文件夹的路径名,而recursive=True也表示检查子文件夹。

希望这会有所帮助。

编辑:

我从here那里得到了信息