我正在尝试创建一个脚本,该脚本将循环遍历文件的文件,这些文件的文件名格式如下:yyyymmdd.hh.filename.
该脚本调用:
./loopscript.sh 20091026.00 23
./loopscript.sh 20091026.11 15
./loopscript.sh 20091026.09 20091027.17
Run Code Online (Sandbox Code Playgroud)
需要脚本检查这两个给定日期/小时之间的每小时.
例如
cat 20091026.00.filename |more
cat 20091026.01.filename |more
...
cat 20091026.23.filename |more
cat 20091027.01.filename |more
cat 20091027.02.filename |more
...
Run Code Online (Sandbox Code Playgroud)
等等.
任何想法如何去做?我对标准的0 - x循环没有任何困难.或简单的循环.只是不知道如何去做以上.
我试图想出一种以最好的pythonic方式实现这一目标的方法.现在,我能想到的唯一方法就是暴力破解它.
用户以下列方式之一输入日期(通过命令行)(例如./mypy.py date ='20110909.00 23')
date='20110909'
date='20110909.00 23'
date='20110909.00 20110909.23'
Run Code Online (Sandbox Code Playgroud)
所有这三个例子都应该有相同的结果,如果它填充一个列表(我可以排序),例如
['20110909.00', '20110909.23]
Run Code Online (Sandbox Code Playgroud)
或者甚至是两个排序的单独变量,但在所有情况下它都是YYYYMMDD.HH,并且需要确保它确实是日期而不是文本.
有任何想法吗?
谢谢.
+++++ EDIT +++++在插入这个之后,我想我需要先做很多日期检查/操作.这一切似乎都很有效.除了在最后,我通过日期验证运行列表,它每次都失败 - 即使它应该通过.
(我用它启动)./ test.py date ='20110909.00 23'
(或日期的任何变化 - 即日期= '20 22'或日期='20110909'或日期='20110909.00 23'等)
import sys, re, time, datetime
now = datetime.datetime.now()
tempdate=[]
strfirstdate=None
strtempdate=None
temparg2 = sys.argv
del temparg2[0]
tempdate = temparg2[0].replace('date=','')
date = tempdate.split(' ');
tempdate=[]
date.sort(key=len, reverse=True)
result = None
# If no date is passed then create list according to [YYMMDD.HH, YYMMDD.HH]
if date[0] == 'None':
tempdate.extend([now.strftime('%Y%m%d.00'), now.strftime('%Y%m%d.%H')]) …Run Code Online (Sandbox Code Playgroud) 我一直在使用SED(Bash shell)来逃避单引号的问题.
我需要做
$cfg['Servers'][$i]['password'] = '';
Run Code Online (Sandbox Code Playgroud)
成
$cfg['Servers'][$i]['password'] = 'mypassword';
Run Code Online (Sandbox Code Playgroud)
我试过的是:
sed -i "s/$cfg['Servers'][$i]['password'] = '';/$cfg['Servers'][$i]['password'] = '$rootpassword';/g" /usr/share/phpmyadmin/libraries/config.default.bak
Run Code Online (Sandbox Code Playgroud)
最终真的让这条线路变得笨拙.
$cfg['Servers'][$i]['password['Servers'][]['passsword'] = 'mypassword'
Run Code Online (Sandbox Code Playgroud)
我试过'\''来逃避单引号,我认为太阳下的其他所有东西都不能在那里得到它.
任何人都可以指出我可能出现的明显错误吗?
谢谢.
我遇到了子进程和打印引号的问题.
我的Python脚本接受用户输入,稍微将其混淆 - 我需要它以这种方式将结果发送到bash脚本.
myscript.sh 'var1 == a var2 == b; othervar == c' /path/to/other/files
Run Code Online (Sandbox Code Playgroud)
我挂在哪里就是单引号.Python试图将它们删除.
我用这个来测试.
subprocess.Popen([myscript.sh 'var=11; ignore all' /path/to/files], shell=True, executable="/bin/bash")
Run Code Online (Sandbox Code Playgroud)
返回指向第二个单引号的无效语法.我也尝试了上面没有括号,并在内部使用单引号和内部双引号等.
其他 - 想要的.
正如我上面所说'var == a var == b; othervar == c'是从python脚本(字符串格式)派生的 - 我需要像这样在子进程中调用它.
subprocess.Popen([myscript.sh myvariables /path/to/files], shell=True, executable="/bin/bash")
Run Code Online (Sandbox Code Playgroud)
我只需要像第一个例子那样将单引号括在myvariables的值附近.
有关我正在采用正确方法的地方的指示吗?
谢谢.
Python 2.4.x - 我无法安装任何非标准模块.*nix环境.
所以我有一个输出,我在使用ansi着色时有一些颜色.效果很好.但输出太长了我需要管道减少或使用pydoc的页面()
一旦我做了 - 颜色变成了
ESC[1;36m TEXT TO FOLLOW: ESC[1;37m
Run Code Online (Sandbox Code Playgroud)
我在Cucumber看到:管道输出没有失去颜色 ,亚当说输出的很多输出都失去了它的颜色 - 但如果发送到终端它就好了.
使用pydoc的ttypager会保留颜色输出 - 但不提供"less"类型的功能(向上滚动).
我如何充分利用这两个世界?颜色和更少类型的功能?
谢谢.
我是Python的新手 - 让我的脚湿透.
我想创建一个查找ip地址的循环,并使用循环计数作为密钥名称的一部分.
即
i = 0
while i < 5:
ip1= re.search(r'(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}', commandslist)
if ip1:
myip1 = ip1.group()
commandslist = commandslist.replace(myip1,'')
print 'found', ip1.group()
i=i+1
Run Code Online (Sandbox Code Playgroud)
我想做的是它说ip1或myip1用i的当前值替换1.我已经尝试过ip [i]并且只是抛出了没有被定义的错误.定义ip = range(0,5)似乎根本没有帮助.
有人能指出我回到正确的道路吗?谢谢.
Python 2.4.x在这里.
一直在试图让subprocess与glob一起工作.
好吧,这是问题所在.
def runCommands(thecust, thedevice):
thepath='/smithy/%s/%s' % (thecust,thedevice)
thefiles=glob.glob(thepath + '/*.smithy.xml')
p1=subprocess.Popen(["grep", "<record>"] + thefiles, stdout=subprocess.PIPE)
p2=subprocess.Popen(['wc -l'], stdin=p1.stdout, stdout=subprocess.PIPE)
p1.stdout.close()
thecount=p2.communicate()[0]
p1.wait()
Run Code Online (Sandbox Code Playgroud)
我在屏幕上收到许多"grep:写输出:断管"错误.
它必须是我想念的简单事物,我无法发现它.任何的想法?
先感谢您.