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

python: unable to find files in recently changed directory (OSx)

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

示例代码:

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)。 (这足以让其他任务完成。)仍然没有。

嗯。帮助?谢谢!

您应该在调用 launch 之后添加等待。在文档打印完成之前,启动将在后台和 return 中生成任务。您可以输入一些任意的 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