python-3.x - Python 3.6 pathlib 路径改名父目录

标签 python-3.x pathlib

来自 pathlib library 的新路径包,它是从 Python 3.4 添加的,似乎是 os.path.join() 等方法的强大替代品。 ,但我在使用它时遇到了一些麻烦。

我的路径可以是 folder_foo/file.csv 中的任何内容至long/path/to/folder_foo/file.csv .我在 folder_foo 中阅读了 .csv 文件使用 pandas,修改它并希望将其保存到 folder_bar/file.csvlong/path/to/folder_bar/file.csv .

本质上我想重命名 folder_foofolder_bar在路径对象中。

编辑:示例路径代码

csv_path = Path("long/path/to/folder_foo/file.csv")

尝试

1
csv_path.parents[0] = csv_path.parents[0] + "_clean")

这会导致错误 TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str' ,这意味着您不能使用 +结合 PosixPathstrTypeError: unsupported operand type(s) for +: 'PosixPath' and 'str' 中所述.

2

为了解决这个问题,我尝试了以下方法:
csv_path.parents[0] = Path(str(csv_path.parents[0]) + "_clean")

然而,这会导致错误:TypeError: '_PathParents' object does not support item assignment .

由于PosixPath不是列表,这个错误是可以理解的。

3

也许 .parts是一种更好的方法,但是
csv_path.parts[-2] = csv_path.parts[-2][:-3] + "bar"

结果:TypeError: 'tuple' object does not support item assignment .

问题

如何轻松重命名文件的父文件夹?

最佳答案

为了可读性,宁愿把它分开:

bar_folder = csv_path.parent.parent / 'folder_bar'
csv_path2 = bar_folder / csv_path.name

将目标文件夹作为变量还可以让您创建文件夹,例如:
bar_folder.mkdir(exist_ok=True)

关于python-3.x - Python 3.6 pathlib 路径改名父目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959420/

相关文章:

python - 如何在 Hangman 游戏中通过一次猜测激活多个字母?

python-3.x - 从 pathlib 的 Path 对象获取顶级

python - 为什么 pathlib.Path ("C:") 解析为 Windows 上的工作目录?

python - os.open 不使用给定的权限模式创建文件

python - 使用request python下载txt文件

python - itertools 使用列表进行计数

python - C Python : Running Python code within a context

python - pathlib Path.rglob 在 Windows 中的长文件路径上失败

python-3.x - 如何创建自己的 pytest fixture ?

python-3.x - 对数据框进行单元格操作,确定精度