重新组织目录时出现意外行为(python、shutil)

问题描述 投票:0回答:1

我有一个功能可以重新组织本地保存数据的目录,但它的行为方式出乎意料。有 3 个文件夹,

current
previous
tma
(两个月前),通过下面的功能,我期望它将删除现有的
tma
,重命名
current
->
previous
 previous
->
tma
,然后重新创建并填充(使用另一个函数)
current
文件夹。

import os
import shutil

__PATH = os.getcwd()

def reorganise_directory():
    print(__PATH)
    destinations = ['current', 'previous', 'tma']
--->shutil.rmtree(os.path.join(__PATH, f'/data/{destinations[-1]}'))
    shutil.move(os.path.join(__PATH, f'/data/{destinations[1]}'), os.path.join(__PATH, f'/data/{destinations[-1]}'))
    shutil.move(os.path.join(__PATH, f'/data/{destinations[0]}'), os.path.join(__PATH, f'/data/{destinations[1]}'))
    return

这是我收到的错误:

似乎由于某种原因,打印出

__PATH
C:\dev\python\smog_usage_stats
变量正在变成箭头指示的行中的
C:\
。我不知道为什么?

python shutil
1个回答
0
投票

尝试使用它:

import os
import shutil

__PATH = os.getcwd()

def reorganise_directory():
    print(__PATH)
    destinations = ['current', 'previous', 'tma']
    # Change f"/data/{destinations[x]}" to "data", destinations[x]
    shutil.rmtree(os.path.join(__PATH, "data", destinations[-1]))
    shutil.move(os.path.join(__PATH, "data", destinations[1]), os.path.join(__PATH, "data", destinations[-1]))
    shutil.move(os.path.join(__PATH, "data", destinations[0]), os.path.join(__PATH, "data", destinations[1]))
    return

不要在 NT 系统上或向后使用类似 Unix 的斜杠。它可能会导致意外的行为+如果您不在“os.path.join”中使用斜杠(仅名称),您将具有平台独立性,这将有助于启动您的程序,例如,在Linux或MacOS上。

© www.soinside.com 2019 - 2024. All rights reserved.