我需要一种通过Unix命令行中的正则表达式使用grep搜索文件的方法.例如,当我输入命令行时:
python pythonfile.py 'RE' 'file-to-be-searched'
Run Code Online (Sandbox Code Playgroud)
我需要'RE'在文件中搜索正则表达式并打印出匹配的行.
这是我的代码:
import re
import sys
search_term = sys.argv[1]
f = sys.argv[2]
for line in open(f, 'r'):
if re.search(search_term, line):
print line,
if line == None:
print 'no matches found'
Run Code Online (Sandbox Code Playgroud)
但是当我输入一个不存在的单词时,no matches found不会打印
我有一些Bash的经验,我不介意,但现在我正在做很多Windows开发,我需要做基本的东西/使用Windows命令行语言编写基本脚本.出于某种原因,这种语言真的让我很恼火,所以我正在考虑学习Python并使用它.
Python适合这样的东西吗?移动文件,创建脚本来执行诸如解压缩备份和恢复SQL数据库等操作.
我正在写一个Python脚本,我的时间已经不多了.我需要做一些我在bash中非常熟悉的事情,所以我只是想知道如何将一些bash行嵌入到Python脚本中.
谢谢
目前我正在使用Windows批处理文件来构建我的软件.它可以运行MSBuild,复制文件,创建ZIP文件,运行一些测试,包括颠覆版本号等.
但问题是,批处理文件是邪恶的.所以我想换个更好的东西.我打算用Python重新创建我的构建脚本.这是一个明智的选择吗?那些构建系统如Ant,SCons,Maven,Rake等等.使用其中任何一个都是更好的选择吗?
注意:我不打算替换我的Visual Studio解决方案/项目文件.我只想编写创建软件版本所需的所有其他内容.
编辑:我有充分的理由离开批处理,这不是我的问题所在.我想知道(例如)SCons给我的是什么,而不是普通的Python脚本.
如何使用Python在Linux中创建用户?我的意思是,我知道子进程模块,并考虑调用'adduser'并一次传递所有参数,但'adduser'命令会询问一些问题,如密码,全名,电话和东西.我如何使用子流程回答这个问题?我在这个问题上看到了名为pexpect的模块:我可以使用Python作为Bash的替代品吗?.还有其他标准模块吗?
我想知道使用os.system()在Python脚本中调用bash命令是否是一种好的风格.我也想知道这样做是否安全.
我知道如何在Bash和Python中实现我需要的一些功能,但在Bash中实现它更简单,更直观.但是,我觉得编写os.system("bash代码")非常hackish.
具体来说,我想将所有以特定扩展名结尾的文件移动到目录中.
在bash中:*mv .ext/path/to/destination 在Python(伪代码)中:对于目录中的文件:if file.endswith("ext"):将文件移动到目标
在这种情况下,我该怎么办?
什么是向我的linux守护程序应用程序发送消息的最简单方法?是否myapp foo bar可以调用回调而不是启动新进程?什么是与守护进程通信的标准方法?是我最合理的选择,坚持使用PID /var/run并创建命名管道或套接字?
什么是在命令行上运行的应用程序与其守护程序进程通信的标准方式?当我输入时,我假设不可能要求linux调用回调myapp foo bar?
以下在Mac OS X上运行正常:
#!/bin/bash
R CMD Sweave myfile.Rnw
pdflatex myfile.tex
open myfile.pdf
Run Code Online (Sandbox Code Playgroud)
现在,我意识到这3行代码对我的工作非常有帮助 - 独立于某些特定文件.因此,我想将该文件用作参数.我知道如何使用一个参数本身但是在字符串之后拆分输入并在之后连接它时会出现问题.如果我能够分割文件名参数,如:
split($1,".") # return some array or list ("name","ext")
Run Code Online (Sandbox Code Playgroud)
或者是否比在shell脚本中使用Python更简单,完全不同?
提前获取任何一般建议和示例!