有没有一种“很好”的方法来迭代shell命令的输出?
我正在寻找类似于以下内容的python等价物:
ls | while read file; do
echo $file
done
请注意,'ls‘只是shell命令的一个示例,它将返回多行的结果,当然,“echo”只是:使用它做一些事情。
我知道这些替代方案:,但我不知道该使用哪一种,也不知道是否有更好的解决方案。(事实上,“更好”是这个问题的主要焦点。)
这是为了用python替换一些bash脚本。
我希望得到与ls在bash或python脚本中创建的输出相同的输出。我的意思不是列出目录,但是ls所做的事情是为了能够“循环”。示例:
# ls
a b c d
# ls | head -n 1
a
# for i in $(ls); do echo "file: $i"; done
file: a
file: b
file: c
file: d
为什么ls在调用它的时候仍然在一行中显示所有的东西呢?
使用选项卡不起作用..换行符只是强制它为多行。\000不起作用。
# echo -e "a\tb\tc\td" | head -n 1
a b c
目前,我正在开发一个Python程序,它返回在任意多行输入中出现次数最多的单词,最后一行是字符串"###“。
poetry = []
max = 0
maxitem = None
while True:
poetry.append(input().lower().split())
for x in poetry:
count = poetry.count(x)
if count > max:
max = count
maxitem = x
print(maxitem)
现在,我遇到的主要问题是我在while循环体中得到的EOF错误。据我所知,
我试图通过返回函数将文本连接到多行字符串中,如下所示。
btc_positions=[{
'symbol: BTC',
'margin_balance: 0.15',
'margin_position: 0.05',
'margin_frozen: 0.01'}]
for pos in btc_positions:
for attributes in pos:
text = f"{attributes}: {pos[attributes]}"
return text
文本是这种格
如果文件只有一行,则发送错误消息。我使用的是Python 2.6.9版本。下面是我的代码。我得到行数,但如果条件不起作用。
import os
import subprocess
count=subprocess.Popen('wc -l <20170622.txt', shell=True, stdout=subprocess.PIPE)
if count.communicate() == 1:
sys.exit("File has no data - 20170622.txt")
我尝试了不同的方法来使if条件工作,但没有运气。这里我想检查
我的代码现在只有400多行长,我宁愿不给出答案,而是给出一些可能出错的建议。在我的程序中,我从以下几个子过程开始:
#out_select is a variable that defaults to the AD9850 control program
#and is switched to the sinetable program with the valve_select command.
subprocess.call(out_select, shell=True)
#The following lines are used to find the PID of the progra
我有下面的代码从C#调用,有什么方法可以找出从C#运行的Python脚本已经通过还是失败了?是否有指示从C#运行的python应用程序成功或失败的退出/返回代码?
using System;
using System.IO;
using System.Diagnostics;
namespace CallPython
{
class Program
{
static void Main(string[] args)
{
string python = @"C:\\Python27\python.exe
Guido van Rossum
Python提示:您可以使用多行字符串作为多行注释。除非用作文档字符串,否则它们不会生成代码!:-)
下面的多行字符串,当不用作docstring时,是否占用内存中的一些空间?
'''
Hello, folks!
This is a multi-line string.
'''
Python中的一行循环能否仅用于构建列表?(即列表理解),还是它们可以用于更一般的计算?
例如,我知道Python中的列表理解(~单行循环)。
my_list = [ 2*i for i in range(10)]
也可以使用多行循环构建:
my_list = []
for i in range(10):
my_list.append(2*i)
但是,总是可以将一般的多行循环转换成单行循环吗?
例如,假设我们有以下多行For循环:
my_array = np.ones(10*10)
for x in range(10):
my_array[x,:] = 0
我们能把它转换
Javascript还是很新的,我正在使用多行regex进行挣扎。
通常,正则表达式的边界是行的开始处为^,当前行的末尾为$。因此,我的正则表达式受到约束,只能在^和$之间运行。
现在,在多行模式下,我如何设置边界?我看过几个例子,这只是在回避我。
如果我的饲料看起来像这样
Joe's item list
Item one is Abc
Item two is xyz
Item three is 123
End of Item List
我的典型regex看起来会像^Item (\w+) is (\w+)$。
但是我希望我的正则表达式只在开始和结束之间触发,并且想要抓住这是Joe