我一直试图永远解决这个问题(我是编程的新手),我无法弄明白.
我正在尝试构建一个将测试文件的脚本,并为我提供输出,我可以从中获取"音频格式"等信息,然后我可以将其放入文件名中.但是,我甚至无法让脚本返回任何文件信息.插入输入文件时我碰到了墙...
所以在这一点上我只需要帮助让它根据我投入的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) 如果这是其他地方的问题,我很抱歉.通过谷歌和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的文档并尝试了几个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.
所以我觉得我可能使用了错误的单词在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文档或从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)
但是那没有用;也没有把它们放在不同的线上。我要如何做/制作所有的潜水艇和东西?