小编Rob*_*ood的帖子

使用Python获取FFProbe信息

我一直试图永远解决这个问题(我是编程的新手),我无法弄明白.

我正在尝试构建一个将测试文件的脚本,并为我提供输出,我可以从中获取"音频格式"等信息,然后我可以将其放入文件名中.但是,我甚至无法让脚本返回任何文件信息.插入输入文件时我碰到了墙...

所以在这一点上我只需要帮助让它根据我投入的argv吐出信息.希望我能够弄清楚如何从中解析音频信息.

我的尝试似乎很接近:

#!/usr/bin/python
import os, sys, subprocess, shlex, re
from subprocess import call
def probe_file(filename):
    p = subprocess.Popen(['/opt/local/bin/ffprobe', '-show_format', '-pretty', '-loglevel quiet', -i filename], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    print filename
    print p.communicate()
[probe_file (f) for f in os.listdir('.') if not f.startswith('.')]
Run Code Online (Sandbox Code Playgroud)

python ffmpeg ffprobe

7
推荐指数
2
解决办法
1万
查看次数

Python Lambda计数/循环函数

如果这是其他地方的问题,我很抱歉.通过谷歌和Stackforum搜索我没有找到任何可以推断出答案的内容; 但我觉得那部分就是我.

我正在尝试将lambdas作为一个概念,作为其中的一部分,我正在寻找使用它的方法.

所以,如果从功能的角度来看这是一个非常愚蠢的关于lambda的事情,请随时让我知道并解释.但无论哪种方式,我仍然想知道答案/仍然想知道如何用python语言做到这一点.

因此,出于测试目的,我有:

my_test = 'test_name'
testlist = ['test_name', 'test_name_dup', 'test_name_dup_1', 'test_name_dup_3']
Run Code Online (Sandbox Code Playgroud)

我正在寻找使用lambda创建一个循环的函数,并返回不在testlist中的第一个test_name_#.该功能最终将应用于文件名,但出于测试目的,我不得不远离实际读取文件名 - 给了我太多方法来搞砸了.

但my_test必须能够更改,测试列表将是文件路径列表.

所以,我正在寻找一个像以下的功能:

new_name = lambda x: my_test + '_' + str(x)
Run Code Online (Sandbox Code Playgroud)

但是初始值应该是x = 1,并且它应该继续,直到new_name不在testlist中.似乎:

bool(new_name not in testlist)
Run Code Online (Sandbox Code Playgroud)

可能是有用的东西.

但我无法想出一种方法将初始x设置为1,并使用(x + 1)循环直到bool为真.

我知道这是可能的,因为我发现一些CRAZY lambda示例循环遍历文件中的行.我只是无法理解它们(并且没有任何方式可以与它们一起玩,因为它们处理的是编程级别之外的事情.

在相关的说明中,我可以在此循环的开头添加值吗?(即我可以检查test_name,然后检查test_name_dup,然后检查test_name_dup_#)?

在此先感谢您的帮助!Lambdas(虽然非常酷)完全弄乱了我的脑袋.

python lambda

5
推荐指数
2
解决办法
1万
查看次数

区分文件和目录

所以我确定这是一个愚蠢的问题,但我查看了Python的文档并尝试了几个Google代码,但没有一个有效.

似乎以下应该工作,但它返回"False"为我的目录/ foo/bar我有3项:1文件夹"[文件夹]",1文件"测试"(没有扩展名),和1文件"测试py"为.

我希望有一个脚本可以区分文件夹和一堆函数的文件,但我无法找出任何有用的东西.

#!/usr/bin/python
import os, re
for f in os.listdir('/foo/bar'):
    print f, os.path.isdir(f)
Run Code Online (Sandbox Code Playgroud)

目前为所有内容返回false.

python

3
推荐指数
1
解决办法
1413
查看次数

重命名Python存在的文件

所以我觉得我可能使用了错误的单词在Google / StackOverflow上四处寻找代码。

我正在构建一个脚本,该脚本(除其他事项外)将做很多移动文件的操作。

我目前有一点行,用于从扩展名中拆分文件名,如果目录中已存在该文件,则添加Filename +(重复)+ Extension。

但是,我觉得这里有一个简单的小单行代码,本质上可以做到(重复),(重复1),(重复2),(重复3)等(基本上只是将第二个数字更改为下一个)编号(如果文件与当前文件一起存在)。

我太愚蠢而无法弄清楚自己的简单解决方案是什么?

抱歉,我没有想到我当前的代码可以帮助人们回答我的问题!

def destination(self, f): return os.path.abspath('.')+'/'+self.filename(f)+'/'+self.filename(f)+' (Duplicate)'+self.extension(f) if and os.path.isfile(os.path.abspath('.')+'/'+self.filename(f)+'/'+f) else os.path.abspath('.')+'/'+self.filename(f)+'/'+f
Run Code Online (Sandbox Code Playgroud)

我使用了一种略有更改的方法来获取文件名和扩展名(本质上只是为了解决一些rar部分和一些文件夹问题)。但是'self.filename(f)和self.extension(f)基本上只是os.splittext(f)[0]和os.splittext(f)[1]。

python rename

2
推荐指数
1
解决办法
1938
查看次数

多个Re.Subs Python

抱歉,但是我无法从Python文档或从Google找到的任何内容中弄清楚这一点。

因此,我一直在从StackOverflow的一位出色助手中重命名代码为99%的文件。

我正在整理一个重命名脚本(这是我从这里的人那里得到的帮助),该脚本可以使用名称(而不是扩展名)。

我确定我会提出更多的替代方案,但是目前的问题是我不知道该怎么做一个以上的替代方案。 当前代码(用空格替换点):

import os, shutil, re

def rename_file (original_filename):
    name, extension = os.path.splitext(original_filename)
    #Remove Spare Dots
    modified_name = re.sub("\.", r" ", name)
    new_filename = modified_name + extension
    try:
        # moves files or directories (recursively)
        shutil.move(original_filename, new_filename)
    except shutil.Error:
        print ("Couldn't rename file %(original_filename)s!" % locals())
[rename_file(f) for f in os.listdir('.') if not f.startswith('.')]
Run Code Online (Sandbox Code Playgroud)

希望也

re.sub("C126", "Perception", name)
re.sub("Geo1", "Geography", name)
Run Code Online (Sandbox Code Playgroud)

另外,如果我能将除“ and | if”以外的任何单词的首字母大写,那将是很棒的

我试过了

modified_name = re.sub("\.", r" ", name) && re.sub(... 
Run Code Online (Sandbox Code Playgroud)

但是那没有用;也没有把它们放在不同的线上。我要如何做/制作所有的潜水艇和东西?

python

1
推荐指数
2
解决办法
6254
查看次数

标签 统计

python ×5

ffmpeg ×1

ffprobe ×1

lambda ×1

rename ×1