先上正确的代码,使用realpath:
from os import path
import sys
file_path = path.dirname(path.realpath(sys.argv[0])) + '\\spiders'
实现爬虫中,模拟cmd命令scrapy crawl 爬虫文件名,通过打包形成可执行文件,该执行文件需放到和spiders文件夹同级目录下
全部代码,main_get_news.py:
# 模拟cmd命令scrapy crawl qxyj
from os import system, path
import sys
# os.path.realpath()先处理路径中的符号链接,再返回绝对路径前文件所在目录的绝对路径
file_path = path.dirname(path.realpath(sys.argv[0])) + '\\spiders'
# 返回python解释器的路径,这个也可以,仅仅针对生成可执行文件时使用
# file_path = path.dirname(sys.executable) + '\\spiders'
print("路径地址:", file_path)
if path.exists(file_path):
system('cd {} && scrapy crawl qxyj'.format(file_path))
else:
print("执行失败!该执行文件需放在和spiders文件夹同级目录下!")
input("按回车键退出...")
再通过pyinstaller打包:pyinstaller -F main_get_news.py即可
之后还可以通过用户输入爬虫名的方式,更灵活的使用
还可以了解一下subprocess:
subprocess.Popen('notepad.exe D:\\123.txt') subprocess.Popen('notepad.exe D:\\123.txt',shell=True) subprocess.Popen(['notepad.exe','D:\\123.txt'])