如何在扩展名前向文件名添加ID?
我有一个文件名:name.ext
我要执行以下操作:
name + id + '.' + ext for name, ext in filename.split()
或者找到一种更好的方式来获取文件名,并在扩展名之前的末尾添加随机的7个字符串。
这是我到目前为止的内容:
def generate_id(size=7, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
def append_id(filename):
return (name + '_' + generate_id() + '.' + ext for name, ext in filename.split('.'))
但是它将其视为生成器表达式,这不是我想要的结果。
编写append_id
函数的正确方法是什么?
-
要在一行中完成,可以尝试:
def append_id(filename): return "{0}_{2}.{1}".format(*filename.rsplit('.', 1) + [generate_id()])
但是,它不是很可读。
大多数框架都提供处理文件名的功能,Python也不例外。您应该使用os.path.splitext:
def append_id(filename): return "{0}_{2}{1}".format(*os.path.splitext(filename) + (generate_id(),))
请注意,第二个版本需要进行两项附加修改:
splitext
返回一个元组而不是一个列表,所以我们需要generate_id
用一个元组包装结果splitext
保留点,因此您需要将其从格式字符串中删除
尽管如此,我在这里也不会感到困惑-请参阅下一个答案,以获取更具可读性的解决方案。
-
如何在 bash 脚本中检查文件名的扩展名?
2022-07-28 关注 0 浏览14 1答案
-
如何在Java中获取没有扩展名的文件名?
2022-05-26 关注 0 浏览23 1答案
-
如何在Swift中从文件扩展名中拆分文件名?
2021-01-31 关注 0 浏览75 1答案
-
如何在 Python 中替换(或去除)文件名的扩展名?
2022-07-28 关注 0 浏览11 1答案
-
如何在Python中从文件名替换(或剥离)扩展名?
2021-01-29 关注 0 浏览96 1答案
-
如何在 shell 脚本中删除文件名的扩展名?
2022-07-28 关注 0 浏览12 1答案
-
JasperViewer-如何设置文件名和扩展名(格式)?
2021-01-29 关注 0 浏览77 1答案
-
获取不带扩展名的文件名
2022-05-26 关注 0 浏览20 1答案
-
PHP,获取不带文件扩展名的文件名
2021-02-02 关注 0 浏览118 1答案
-
PHP,获取没有文件扩展名的文件名
2022-07-28 关注 0 浏览16 1答案