Python: 将文件上移一个目录
Python: move a file up one directory
下面是一个小的测试例程,它获取文件的路径并将文件向上移动一个目录。我正在使用 os 和 shutil 模块,是否有一个模块可以执行此任务?是否有更多 pythonic 方式来实现此功能?
下面的代码是 windows 上的 运行,但最好的 cross 平台解决方案将不胜感激。
def up_one_directory(path):
"""Move file in path up one directory"""
head, tail = os.path.split(path)
try:
shutil.move(path, os.path.join(os.path.split(head)[0], tail))
except Exception as ex:
# report
pass
使用这个向上移动一个目录:
filePath = os.getcwd()
os.chdir("..")
folderpath = os.getcwd()
shutil.copy(filePath, folderPath)
从 Python 3.4 开始,您可以使用 pathlib 模块:
import shutil
from pathlib import Path
def up_one_dir(path):
try:
# from Python 3.6
parent_dir = Path(path).parents[1]
# for Python 3.4/3.5, use str to convert the path to string
# parent_dir = str(Path(path).parents[1])
shutil.move(path, parent_dir)
except IndexError:
# no upper directory
pass
这与@thierry-lathuille 的回答相同,但不需要 shutil
:
p = Path(path).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
下面是一个小的测试例程,它获取文件的路径并将文件向上移动一个目录。我正在使用 os 和 shutil 模块,是否有一个模块可以执行此任务?是否有更多 pythonic 方式来实现此功能?
下面的代码是 windows 上的 运行,但最好的 cross 平台解决方案将不胜感激。
def up_one_directory(path):
"""Move file in path up one directory"""
head, tail = os.path.split(path)
try:
shutil.move(path, os.path.join(os.path.split(head)[0], tail))
except Exception as ex:
# report
pass
使用这个向上移动一个目录:
filePath = os.getcwd()
os.chdir("..")
folderpath = os.getcwd()
shutil.copy(filePath, folderPath)
从 Python 3.4 开始,您可以使用 pathlib 模块:
import shutil
from pathlib import Path
def up_one_dir(path):
try:
# from Python 3.6
parent_dir = Path(path).parents[1]
# for Python 3.4/3.5, use str to convert the path to string
# parent_dir = str(Path(path).parents[1])
shutil.move(path, parent_dir)
except IndexError:
# no upper directory
pass
这与@thierry-lathuille 的回答相同,但不需要 shutil
:
p = Path(path).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)