rsync 或任何其他使用 Python 将文件复制到新目录的方法

rsync or any other way to copy files to a new directory using Python

提问人:glukoff 提问时间:10/9/2023 更新时间:10/9/2023 访问量:51

问:

query = 'rsync -zavP [email protected]:/home/server/Catalog/ /home/user/sample'
os.popen(query)
os.chdir('/home/user/sample')
files = glob.glob(*.*)

Rsync 效果很好。复制文件,并在用户目录中创建一个示例子目录,该子目录以前不存在。但是当我尝试获取文件列表时,结果发现它是空的。事实是,在脚本完成工作之前,操作系统不会更新有关目录内容的信息。如果将 rsync 和 glob 拆分为两个不同的脚本并按顺序手动运行它们,您将获得一个文件列表。如何将文件复制到一个新的不存在的目录并立即在一个脚本中获取文件列表?谢谢!

python glob rsync

评论

0赞 Abdul Niyas P M 10/9/2023
我想不会等到完成。您可能需要遵循此操作才能等待该过程完成。os.popen
0赞 glukoff 10/9/2023
完全。您可以通过其他方式进行尝试,例如通过 os.walk。结果是一样的。

答:

1赞 Rojin 10/9/2023 #1

您可以使用 from module 或 go for module 并用于列出所有内容。这些是首选方法,因为它们也显示修改后的时间。os.scandir()ospathlibiterdir()os.listdir()

我确实相信,与其使用两个单独的脚本,不如使用两个单独的函数;这样,您可以确保在第一个函数 - 复制 - 完成后进行列表。 例如:

def copy_files():
  rsync ...
  return

def list_files():
  os.scandir()
  ...

另一件事是使用一些等待方法:

from waiting import wait
...
wait(YOUR_FUNCTION(), ...)
...

我不认为这个函数在这里有用;因为您不知道复制所花费的时间。sleep()

最后但并非最不重要的一点是,您还可以使用 rsync 标志来显示复制的进度/文件。

希望对你有所帮助。