当前位置: 首页 > 面试题库 >

使用Python在文件夹中的每个文件上执行命令

明宜年
2023-03-14
问题内容

我正在尝试创建一个Python脚本,该脚本将:

  1. 查看文件夹“ / input”
  2. 对于该文件夹中的每个视频,运行一个mencoder命令(以将其转码为我的手机上可播放的内容)
  3. mencoder完成运行后,删除原始视频。

这似乎不太难,但是我很讨厌python :)

关于脚本的外观有什么想法?

奖励问题:我应该使用

操作系统

要么

subprocess.call

Subprocess.call似乎允许使用更具可读性的脚本,因为我可以这样编写命令:

cmdLine =
[‘mencoder’,sourceVideo,’-ovc’,’copy’,’-oac’,’copy’,’-ss’,‘00:02:54’,’-endpos’,‘00:00:
54”,“-o”,destinationVideo]

编辑:好的,这可行:

import os, subprocess

bitrate = '100'
mencoder = 'C:\\Program Files\\_utilitaires\\MPlayer-1.0rc2\\mencoder.exe'
inputdir = 'C:\\Documents and Settings\\Administrator\\Desktop\\input'
outputdir = 'C:\\Documents and Settings\\Administrator\\Desktop\\output'

for fichier in os.listdir(inputdir):
    print 'fichier :' + fichier
    sourceVideo = inputdir + '\\' + fichier
    destinationVideo = outputdir + '\\' + fichier[:-4] + ".mp4"

    commande = [mencoder,
               '-of',
               'lavf',
               [...]
               '-mc',
               '0',

               sourceVideo,
               '-o',
               destinationVideo]

    subprocess.call(commande)

os.remove(sourceVideo)
raw_input('Press Enter to exit')

为了清楚起见,我删除了mencoder命令,因为我仍在处理它。

感谢大家的投入。


问题答案:

要查找所有文件名,请使用os.listdir()

然后,您遍历文件名。像这样:

import os
for filename in os.listdir('dirname'):
     callthecommandhere(blablahbla, filename, foo)

如果您喜欢子流程,请使用子流程。:-)



 类似资料:
  • 我是java新手,我在VSCODE上编码。我创建2.java文件,如下图所示: 这些是每个文件: Main.java:

  • java.io.FileNotFoundException:E:\testcode\test(系统找不到指定的文件) 在java.io.FileInputStream.Open(本机方法)在java.io.FileInputStream.(未知源)在com.org.FileSpratortTest.Main(FileSpratortest.java:16) 它不显示整个文件路径,我知道我需要把它作

  • 在下面的代码中,我想实现“对于”和“对于”,这将在“C:\对于每一个循环的示例文件”目录中创建文件夹,并在每个目录中创建示例文本文件 运行代码后,会弹出一条错误消息,声明:*在C:\用户\尼克\对于每个脚本Construct.ps1:14字符: 10 for($Directs中的$文件夹){表达式或语句中的意外令牌'in'。 分类信息:ParserError: (:) [], 父母容器错误记录异常

  • 这个问题是本文的后续内容:Python-根据子文件夹和文件名重命名子文件夹中的文件。 我正在尝试遍历中子文件夹中的文件,并以指定的方式重命名每个文件。以下是我目前掌握的代码: 当我运行该行时,,它正确地显示保存在中的名为的文件将被重命名为。 但是,os.rename命令返回以下错误: "必须是字符串,而不是列表。" 这似乎是由于我在os.rename命令中使用了“文件名”。据我所知,os.rena

  • 问题内容: 我尝试解压缩150个zip文件。所有zip文件都使用不同的名称,它们都分散在一个大文件夹中,该文件夹分为许多子文件夹和子子文件夹。我想将每个存档提取到与原始zip文件名相同名称的单独文件夹中,与原始zip文件位于同一位置。我的代码是: 我运行代码后,什么都没有发生。在此先感谢您的任何帮助。 问题答案: 更新: 最后,这段代码对我有用:

  • 我有一个csv($HomeDir)文件,如下所示: 我得到成功的LastAccessTime每个子文件夹在'HomeDir'列与此代码: $newcsv的结果是: 问题是:有没有办法根据相应的“用户”列分配相关用户?这样的输出对我来说也足够了 提前谢谢