小编Sto*_*ing的帖子

Python:响应命令行提示

我试图通过命令行使用Python与另一个程序进行交互.我遇到的主要问题是具有多个后续提示的特定呼叫.最初,命令行调用询问项目的名称,然后继续询问我是否要查看项目的任何子文件夹.我需要按顺序回答每一个的y/n,遗憾的是,每个y或n的答案都不是y或n.另外,如果不阅读个别提示,我无法知道问题的答案,因此我无法一次性发送"y"或"n"块.

这是命令行调用:

si viewproject

输入命令后,命令行会提示:

输入项目名称:

一个示例响应是:

输入项目名称:c:/test.pj

进入项目后,它会提示以下内容:

你想进入子项目test_subprj.pj吗?[ynYN](n)的

在这一点上,我需要用ay或n来响应,这取决于我是否需要该子项目.同样,对这个问题的回答取决于子项目.我需要能够在此提示中读取子项目,以便用'y'或'n'来响应它

目前我需要分别手动输入项目以及y和n中的每一个.我的目标是使用Python自动执行此过程.

有没有办法自动响应这些命令行提示?

目前的进展

子流程策略

 project_path = "c:/test.pj"

 with Popen(["si", "viewproject", "--project=" + project_path], 
             stdin=PIPE, stdout=PIPE, universal_newlines=True) as p:
     for line in p.stdout: 
         if line.startswith("Do you want"):
             answer = 'n'
         else:
             continue # skip it
         print(answer, file=p.stdin) # provide answer
         p.stdin.flush()
Run Code Online (Sandbox Code Playgroud)

使用Popen语句后,此方法挂起.它永远不会出错,但它永远不会进入或退出for语句而永远不会完成.目前我默认所有"n"的答案,但稍后将用逻辑替换.

Winpexpect战略

 import re
 import sys
 from functools import partial
 import winpexpect

 project_path = "c:/test.pj"

 p = winpexpect.winspawn('si viewproject --project=' + project_path)
 p.logfile = sys.stdout
 patterns = [re.compile('ynYN'), winpexpect.EOF] …
Run Code Online (Sandbox Code Playgroud)

python command-line subprocess command-prompt python-3.x

9
推荐指数
2
解决办法
1万
查看次数

批处理:将.txt文件中的行插入.txt文件

我是批处理文件的新手,并且一直在修改简单的命令.我已经想出如何将文本移动到另一个文件,找到一行等,但我希望能够在已有的文本文件中添加几行文本.这是我到目前为止:

@ECHO OFF
CD C:\Documents and Settings\SLZ1FH\Desktop\New Folder
FOR /F "tokens=*" %%A IN (Examples.txt) DO (
  ECHO %%A
  IF %%A=="Ex3 3"(
    TYPE Line_to_add.txt >> Examples.txt
  )
)
Run Code Online (Sandbox Code Playgroud)

如果Examples.txt包含:

  • Ex1 1
  • Ex2 2
  • Ex3 3
  • Ex4 4
  • Ex5 5

和Line_to_add.txt包含:

  • 这是一条线
  • 这是踢球的另一条线!

我希望输出为:

  • Ex1 1
  • Ex2 2
  • Ex3 3
  • 这是一条线
  • 这是踢球的另一条线!
  • Ex4 4
  • Ex5 5

tia :)

@ECHO OFF
FOR /F "tokens=*" %%A IN (Examples.txt) DO (
  ECHO %%A
  IF "%%A" EQU "Ex3" (
    TYPE Line_to_add.txt
  )
) >> temp.txt …
Run Code Online (Sandbox Code Playgroud)

batch-file

3
推荐指数
1
解决办法
2万
查看次数