V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mostre
V2EX  ›  Python

windows 下如何通过 Python 脚本调用 cmd 命令并执行

  •  
  •   mostre ·
    qixiaomao · 2018-01-22 11:06:32 +08:00 · 4388 次点击
    这是一个创建于 2492 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1>问题来由:因为之前 vim 环境配置没有配好,所以才有了这个想法:通过脚本连续执行 cmd 命令。

    2>问题描述:(附上代码)

    import os
    def command_line():
    #os.system('cmd')
         cmd_path = [r"E:\tools\vim80-586w32\vim\vim80\vim.exe "]#列出源文件地址
         cmd_command = "cmd cd {0}".format(cmd_path)
         os.system(cmd_command)#通过 os 的命令来调用 cmd 的命令
    #cmd = 'cmd cd {}'.format(source)
    command_line()
    #完成命令后的反馈
    print('Successful the vim!')
    

    3>在 bing 了一通无果之后,就思考,windows 下是否可以通过脚本连续执行 cmd 命令?另外有的话,可否告知其他方法?谢谢各位大 v 指点!!!

    11 条回复    2018-01-22 18:52:56 +08:00
    likuku
        1
    likuku  
       2018-01-22 11:35:42 +08:00
    subprocess 模块 有带 session 支持的 交互式 执行系统内程序的功能

    os.system() 太旧了
    Akkuman
        2
    Akkuman  
       2018-01-22 12:07:31 +08:00 via Android
    python popen 关键词你找找,应该有的
    meowoo
        3
    meowoo  
       2018-01-22 12:23:17 +08:00 via iPhone
    cd 到了 exeexe 文件上?
    Kisesy
        4
    Kisesy  
       2018-01-22 12:46:21 +08:00
    你这代码错误太多了,首先你直接 cd 到 exe 上去了,还有如果调用 cmd 命令, 需要后面加 \C 参数
    比如 cmd /C dir c:\windows,还有 os.system 本身可以代表 cmd,也就是说你执行的代码前面不需要加 cmd,还有如果切换目录,可以直接用 python 本身的命令,然后再执行就行。。
    hcymk2
        5
    hcymk2  
       2018-01-22 12:49:06 +08:00
    先写个 bat 啊。
    epicnoob
        6
    epicnoob  
       2018-01-22 12:53:02 +08:00
    os.system("cd E:\\tools\\vim80-586w32\\vim\\vim80 && start vim")
    geelaw
        7
    geelaw  
       2018-01-22 13:38:20 +08:00
    第一个问题是:为什么不直接调用 vim 就好了?

    第二个问题是 Windows 的每个盘符具有自己的 working directory,因此只是 cd 不会改变有效的 working directory (因为当前盘符或许不是 E:),一个安全的做法是使用 pushd E:\Path\To\Dir & start .\vim.exe & popd。

    最后,如果你的全部目的是执行一些命令提示符处理的程序,可以换用 batch ——提示:batch 文件必须使用 CR LF。
    UnknownR
        8
    UnknownR  
       2018-01-22 15:49:00 +08:00
    cmd 的 cd 需要加参数,cd /d path, 执行命令或者外部程序需要加 /c, 简单点就写个 bat,调用 cmd 还是 powershell 随便你
    mostre
        9
    mostre  
    OP
       2018-01-22 18:33:24 +08:00
    @meowoo 因为之前我有直接通过 cmd 找到相应路径打开 vim,启动 exe 文件所以就直接把命令敲上去了。
    mostre
        10
    mostre  
    OP
       2018-01-22 18:49:50 +08:00
    @Kisesy 谢谢指点,问题已解决!
    mostre
        11
    mostre  
    OP
       2018-01-22 18:52:56 +08:00
    @geelaw 谢谢指点,cd 不会改变有效的 working directory 这个涨姿势了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 05:02 · PVG 13:02 · LAX 21:02 · JFK 00:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.