用于运行shell命令的Python脚本

时间:2013-08-19 20:21:43

标签: python shell debian subprocess scrapy

我遇到了一些麻烦。我想在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代码运行它时它给了我一个错误:

  

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

是否有人能够告诉我我的代码是否不正确,或者我是否采取了错误的方式。

1 个答案:

答案 0 :(得分:3)

为什么使用子进程?从脚本运行Scrapy的常见做法是使用扭曲的reactor。取自docs

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

有很多例子:

希望有所帮助。