regex 更改Path PosixPath对象中的文件名前缀

pbossiut  于 2023-03-20  发布在  其他
关注(0)|答案(3)|浏览(106)

我需要更改当前文件的前缀。
示例如下所示:

from pathlib import Path
file = Path('/Users/my_name/PYTHON/Playing_Around/testing_lm.py')
# Current file with destination
print(file)

# Prefix to be used
file_prexif = 'A'

# Hardcoding wanted results.
Path('/Users/my_name/PYTHON/Playing_Around/A_testing_lm.py')

正如可以看到的,硬编码是很容易的。但是,有没有办法自动化这一步?有一个伪想法,我想做什么:

str(file).split('/')[-1] = str(file_prexif) + str('_') + str(file).split('/')[-1]

我只想更改PosixPath文件的最后一个元素。但是不可能只更改字符串的最后一个元素

jaxagkaj

jaxagkaj1#

file.stem访问不带扩展名的文件的基本名称。
file.with_stem()(在Python 3.9中添加的)返回一个带有新词干的更新的Path

from pathlib import Path
file = Path('/Users/my_name/PYTHON/Playing_Around/testing_lm.py')
print(file.with_stem(f'A_{file.stem}'))
\Users\my_name\PYTHON\Playing_Around\A_testing_lm.py
efzxgjgh

efzxgjgh2#

使用file.parent获取路径的父级,使用file.name获取最终路径组件,不包括驱动器和根目录。

from pathlib import Path
file = Path('/Users/my_name/PYTHON/Playing_Around/testing_lm.py')

file_prexif_lst = ['A','B','C']

for prefix  in file_prexif_lst:
    p = file.parent.joinpath(f'{prefix}_{file.name}')
    print(p)
/Users/my_name/PYTHON/Playing_Around/A_testing_lm.py
/Users/my_name/PYTHON/Playing_Around/B_testing_lm.py
/Users/my_name/PYTHON/Playing_Around/C_testing_lm.py
enyaitl3

enyaitl33#

类似于@Mark Tolonen的答案,但使用的是file.with_name方法(对我来说,这比“stem”更容易记住)

from pathlib import Path

file = Path('/home/python/myFile.py')
prefix = 'hello'

new_file = file.with_name(f"{prefix}_{file.name}")
print(new_file)
OUTPUT:
/home/python/hello_myFile.py

相关问题