以前有一些类似的解决方案,但似乎没有一个对我有用。
代码:
def watch_dir(self, prefix, dest):
before = dict([(f, None) for f in os.listdir(self.data_dir)])
while 1:
time.sleep(5)
after = dict([(f, None) for f in os.listdir(self.data_dir)])
new_files = [f for f in after if not f in before and f.startswith(prefix)]
before = new_files
for f in new_files:
os.system('mv {f} {dest}'.format(f=f, dest=dest))
当我打印新文件时,我得到-> ('new_files = ', ['sample.tsv'])
,但是mv
命令给出此错误:
mv: cannot stat 'sample.tsv': No such file or directory
有人可以帮助我了解这里出了什么问题吗?!
谢谢!
答案 0 :(得分:1)
os.system
-要在python中运行子流程,请使用subprocess
模块。 subprocess
也太多了,因为您要移动文件,这样就可以使用shutil.move()
来执行相同的操作而无需调用单独的进程。os.listdir
仅返回不带路径的文件名,因此您必须添加自己才能找到文件:os.path.join(self.datadir, f)