我有一个python脚本,它将文件名作为命令参数并处理该文件。但是,我需要处理数千个文件,我想在每个文件上运行脚本,而不必每次都添加文件名作为参数。
例如:
process.py file1
将完全符合我的要求
但是,我想在包含数千个文件(file1,file2,file3等)的文件夹上运行process.py
我发现它可以简单地用Bash
完成for f in *; do python myscript.py $f; done
但是,我在Windows上并且不想安装像Cygwin这样的东西。 Windows命令行的一段代码看起来会模仿上述Bash代码完成的内容?
答案 0 :(得分:1)
MPMediaItem *npItem = self.musicPlayerController.nowPlayingItem;
NSLog(@"Song Title: %@\n assetURL: %@\n Cloud Item: %d", npItem.title, [npItem valueForProperty:MPMediaItemPropertyAssetURL], npItem.cloudItem)
// Log Output
Song Title: Time We Had
assetURL: (null)
Cloud Item: 1
Song Title: The Quiet
assetURL: ipod-library://item/item.m4a?id=1529654720874100371
Cloud Item: 0
我认为这样做了 - 我现在没有方便的Windows手机试用它
How to loop through files matching wildcard in batch file
该链接可能会有所帮助
答案 1 :(得分:0)
import os, subprocess
for f in os.listdir('.'):
if os.path.isfile(f):
subprocess.call(["python", "myscript.py", f])
如果python可执行文件位于PATH中,此解决方案将适用于每个平台。
此外,如果要递归处理嵌套子目录中的文件,可以使用os.walk()
而不是os.listdir()
+ os.path.isfile()
。
答案 2 :(得分:0)
既然你有python,为什么不使用它呢?
import subprocess
import glob
import sys
import os.path
for fname in glob.iglob(os.path.join('some-directory-name','*')):
proc = subprocess.Popen([sys.executable, 'myscript.py', fname])
proc.wait()
还有什么,它的便携性。
答案 3 :(得分:0)
对于当前目录中的每个文件。
for %f in (*) do C:\Python34\python.exe "%f"
<强>更新强> 请注意%f 上的引号。如果您的文件名称中包含空格,则需要它们。您还可以在执行之后添加任何路径+可执行文件。
如果我们想象您的文件如下:
./的 process.py 强>
./ myScripts /的 file1.py 强>
./ myScripts /的 file2.py 强>
./ myScripts /的 file3.py 强>
...
在您的示例中,只是:
for %f in (.\myScripts\*) do process.py "%f"
这会调用:
process.py ".\myScripts\file1.py"
process.py ".\myScripts\file2.py"
process.py ".\myScripts\file3.py"