我正在处理某个程序,如果有问题的文件是flac文件或mp3文件,我需要让它做不同的事情.我可以用这个吗?
if m == *.mp3
...
elif m == *.flac
...
Run Code Online (Sandbox Code Playgroud)
我不确定它是否会起作用.
编辑: 当我使用它时,它告诉我无效的语法.那我该怎么办?
根据官方文档,os.path是一个模块.那么,导入它的首选方式是什么?
# Should I always import it explicitly?
import os.path
Run Code Online (Sandbox Code Playgroud)
要么...
# Is importing os enough?
import os
Run Code Online (Sandbox Code Playgroud)
请不要回答" os为我导入作品".我知道,它现在也适用于我(从Python 2.6开始).我想知道的是关于这个问题的任何官方建议.因此,如果您回答此问题,请发布您的推荐信.
Python中是否有内置函数可以替换(或删除)文件扩展名(如果有的话)?
例:
print replace_extension('/home/user/somefile.txt', '.jpg')
Run Code Online (Sandbox Code Playgroud)
在我的例子中:/home/user/somefile.txt将成为/home/user/somefile.jpg
我不知道它是否重要,但我需要这个我正在编写的SCons模块.(所以也许我可以使用一些SCons特定的功能?)
我想要干净的东西.对字符串中的所有实例进行简单的字符串替换.txt显然不是很干净.(如果我的文件名是这会失败somefile.txt.txt.txt)
在另一个问题中,投票清楚地表明该os.path.splitext函数比简单的.split('.')[-1]字符串操作更受欢迎.有没有人有时间解释为什么会这样?是更快,更准确,还是什么?我愿意接受它有更好的东西,但我不能立即看到它可能是什么.可能导入整个模块来做这件事有点矫枉过正,至少在简单的情况下呢?
编辑:操作系统特异性是一个巨大的胜利,并不是立即显而易见的; 但即便如此,我也应该看到"如果没有一个点"会怎样的情况!并感谢大家对图书馆使用的一般评论.
以下正则表达式
var patt1=/[0-9a-z]+$/i;
Run Code Online (Sandbox Code Playgroud)
提取字符串的文件扩展名,例如
filename-jpg
filename#gif
filename.png
Run Code Online (Sandbox Code Playgroud)
如果字符串确实是一个带有一个点作为分隔符的文件名,如何修改此正则表达式只返回一个扩展名?(显然文件名#gif不是常规文件名)
更新根据tvanofsson的评论我想澄清一下,当JS函数收到字符串时,字符串将包含一个没有空格的文件名,没有点和其他特殊字符(实际上它将被处理slug).问题不在于解析文件名,而在于错误地解析slugs - 函数返回了"jpg"的扩展名,当它被赋予"filename-jpg"时,它应该真正返回null或清空字符串,这是需要纠正的行为.
我知道这个问题在本网站上被多次询问.但是我发现他们错过了一个重要的观点:只考虑了一个周期的文件扩展名*.png *.mp3,但是如何用两个周期来处理这些文件名.tar.gz.
基本代码是:
filename = '/home/lancaster/Downloads/a.ppt'
extention = filename.split('/')[-1]
Run Code Online (Sandbox Code Playgroud)
但很明显,这段代码不能像文件一样工作a.tar.gz.怎么处理呢?谢谢.
我试图找到一个文件的扩展名,给它的名字作为字符串.我知道我可以使用的功能os.path.splitext,但它并不按预期的情况下,我的文件扩展名是.tar.gz或.tar.bz2因为它提供了扩展的gz和bz2,而不是tar.gz和tar.bz2分别.
所以我决定使用模式匹配自己找到文件的扩展名.
print re.compile(r'^.*[.](?P<ext>tar\.gz|tar\.bz2|\w+)$').match('a.tar.gz')group('ext')
>>> gz # I want this to come as 'tar.gz'
print re.compile(r'^.*[.](?P<ext>tar\.gz|tar\.bz2|\w+)$').match('a.tar.bz2')group('ext')
>>> bz2 # I want this to come 'tar.bz2'
Run Code Online (Sandbox Code Playgroud)
我正在使用(?P<ext>...)我的模式匹配,因为我也希望得到扩展名.
请帮忙.
我是正则表达式的新手,并尝试从基本上是文件路径的字符串中提取文件名。
string = "input_new/survey/argentina-attributes.csv"
string_required = argentina-attributes
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过下面的代码来做到这一点。
string.split('/')[2].split('.')[0]
Run Code Online (Sandbox Code Playgroud)
但我希望通过使用正则表达式来做到这一点,因此如果将来路径的格式发生变化(input_new/survey/path/path/argentina-attributes.csv)不应影响输出。
我知道以前问过类似的问题,但我正在寻找一种适合我的用例的模式。
我想知道,这是获取文件扩展名并检查其是否属于列表的更好方法。
name, ext = os.path.splitext(filename)
return ext == ".pdf" # an example
Run Code Online (Sandbox Code Playgroud)
要么
return filename.endswith(".pdf")
Run Code Online (Sandbox Code Playgroud) 假设我的文件夹结构是
+Data
-abc.jpg
-db.jpg
-ap.jpg
Run Code Online (Sandbox Code Playgroud)
输入是“路径/到/数据”
预期输出为 ['abc','db','ap']
我看到了很多类似的问题,但没有得到我想要的。我更喜欢在 python 中使用 os 模块。