2

我有点麻烦。我想在 Python 中的特定目录中运行 shell 命令。根据我在互联网上找到的代码,我需要以下内容:

import os
import subprocess
import shlex

然后代码本身如下

os.chdir('/etc/test/')
cmd = 'scrapy crawl test'
subprocess.call(shlex.split(cmd))

看起来,我正在尝试在 /etc/test/ 目录中运行命令“scrapy crawl test”。当我用终端手动运行它时,它似乎工作正常,但是当我用这个 python 代码运行它时,它给了我一个错误:

抓取时发生信息异常:[Errno 2] 没有这样的文件或目录

有没有人能告诉我我的代码是否不正确,或者我是否以错误的方式处理这个问题。

4

1 回答 1

3

为什么要使用子流程?从脚本运行的一种常见做法Scrapy是使用 twisted 的reactor. 取自文档

from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log
from testspiders.spiders.followall import FollowAllSpider

spider = FollowAllSpider(domain='scrapinghub.com')
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run() # the script will block here

那里有很多例子:

希望有帮助。

于 2013-08-19T20:59:04.293 回答