python:无法在最近更改的目录(OSx)中查找文件

时间:2016-03-28 04:17:08

标签: python macos blocking

我正在使用os.system调用(Python 2.7)以一种生硬的方式自动执行一些繁琐的shell任务,主要是文件转换。然而,由于一些奇怪的原因,我的运行解释器似乎无法找到我刚刚创建的文件。

示例代码:

import os, time, glob

# call a node script to template a word document
os.system('node wordcv.js')

# print the resulting document to pdf
os.system('launch -p gowdercv.docx')

# move to the directory that pdfwriter prints to
os.chdir('/users/shared/PDFwriter/pauliglot')

print glob.glob('*.pdf')

我希望有一个长度为1的列表,其中包含生成的文件名,而不是我得到一个空列表。

也是如此
pdfs = [file for file in os.listdir('/users/shared/PDFwriter/pauliglot') if file.endswith(".pdf")]
print pdfs

我已经手动检查了,预期的文件实际上是他们应该的位置。

另外,我的印象是os.system被阻止了,但是万一它没有,我还在那里找了time.sleep(1)之前找了一些文件。 (这是完成其他任务的足够时间。)仍然没有。

嗯。救命?谢谢!

1 个答案:

答案 0 :(得分:0)

您应该在致电launch后添加等待。启动将在后台生成任务,并在文档完成打印之前返回。您可以输入一些任意sleep语句,或者如果您需要,也可以检查文件是否存在,如果您知道预期的文件名是什么。

import time
# print the resulting document to pdf
os.system('launch -p gowdercv.docx')
# give word about 30 seconds to finish printing the document
time.sleep(30)

替代:

import time
# print the resulting document to pdf
os.system('launch -p gowdercv.docx')
# wait for a maximum of 90 seconds
for x in xrange(0, 90):
    time.sleep(1)
    if os.path.exists('/path/to/expected/filename'):
        break

可能需要等待时间超过1秒的参考here