【问题标题】:Python: Copying a file with shutilPython:使用shutil复制文件
【发布时间】:2013-04-30 23:38:20
【问题描述】:

我正在尝试使用 python 将我的 places.sqlite 信息复制到我的桌面。它存储在 users\username\AppData\Roaming\Mozilla\Firefox\Profiles\rh425234.default\places.sqlite

但是,我们需要从 \Profiles\ 到 \places.sqlite 的 os.walk,并将其复制到我的桌面。这是我想出的:

dirs = '\\users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\'
cop_dir = '\\users\\Desktop\\

for r,d,f in os.walk(dirs):
    if 'places.sqlite' in f:
        shutil.copy2('places.sqlite', cop_dir)
        break

我认为 shutil.copy2 需要一个从中复制的位置和一个要复制到的位置。问题是如果不将 \rh425234.default\ 添加到 copy-from 目录,我不知道该怎么做。

我尝试过类似的方法:

a = os.getcwd() + str(os.listdir(os.getcwd()))

放入 shutil.copy2(a, cop_dir) 但这不起作用。有什么想法吗?

【问题讨论】:

  • 你试过shutil.copy('c:/users/username/AppData/Roaming/Mozilla/Firefox/Profiles/places.sqlite', 'c:/users/username/desktop/')吗?
  • 在 /Profiles 和 /places.sqlite 之间,有一个文件夹被分配了一个随机名称,所以这不起作用。我正在尝试这样做,假设我无法知道该文件夹的名称。
  • 您可以使用glob 模块并使用通配符:/foo/*/bar

标签: python copy os.walk shutil


【解决方案1】:

使用 os.path.join() 获取目录:

dirs = '\\users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\'
cop_dir = '\\users\\Desktop\\'

for r,d,f in os.walk(dirs):
    if 'places.sqlite' in f:
        shutil.copy2(os.path.join(r, 'places.sqlite'), cop_dir)
        break

【讨论】:

  • 'r' 在 (os.path.join(r, 'places.sqlite') 中究竟做了什么
  • @user2256199 r 只是您用于第一个 os.walk 返回值的变量,并保存文件(您的 f 变量)所在的当前目录。 Os.path.jion 将它们粘合在一起。
【解决方案2】:
for r,d,f in os.walk(dirs):
    if 'places.sqlite' in f:
        shutil.copy2(os.path.join(r, 'places.sqlite'), cop_dir)
        break

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 2015-12-24
    • 2018-07-24
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多