我有一个清单,pList.我想将其保存到text(.txt)文件中,以便列表中的每个元素都保存在文件的新行中.我怎样才能做到这一点?
这就是我所拥有的:
def save():
import pickle
pList = pickle.load(open('primes.pkl', 'rb'))
with open('primes.txt', 'wt') as output:
output.write(str(pList))
print "File saved."
Run Code Online (Sandbox Code Playgroud)
但是,列表只保存在文件的一行中.我想要它所以每个数字(它只包含整数)都保存在一个新行上.
例:
pList=[5, 9, 2, -1, 0]
#Code to save it to file, each object on a new line
Run Code Online (Sandbox Code Playgroud)
期望的输出:
5
9
2
-1
0
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
我有 2 个表格文件。一个文件包含仅称为lookup_file.txt的 50 个键值的映射。 另一个文件具有 30 列和数百万行的实际表格数据。data.txt 我想用lookup_file.txt 中的值替换第二个文件的id 列。.
我怎样才能做到这一点?我更喜欢在 bash 脚本中使用 awk .. 另外,我可以在 bash 中使用哈希图数据结构来存储 50 个键/值而不是另一个文件吗?
我正在尝试使用awk修改文本文件.有三列,我想删除第一列中的部分文本:
range=chr1 20802865 20802871
range=chr1 23866528 23866534
Run Code Online (Sandbox Code Playgroud)
至
chr1 20802865 20802871
chr1 23866528 23866534
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我试过awk '{ substr("range=chr*", 7) }'和awk '{sub(/[^[:space:]]*\\/, "")}1',但删除了文件中的所有内容.
我有一个文本文件,可以有X个字段,每个字段用逗号分隔.在我的脚本中,我逐行阅读,检查在该行上填充了多少字段,并确定我需要在该行的末尾追加多少逗号来表示所有字段.例如,文件如下所示:
Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5
2326168436,4,1,2,3,4
Run Code Online (Sandbox Code Playgroud)
应该成为这样的:
Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5,,
2326168436,4,1,2,3,4,,,
Run Code Online (Sandbox Code Playgroud)
我的下面的脚本有效,但看起来非常低效.它是逐行阅读在大文件上有困难吗?导致经济放缓的是它吗?更好的方法吗?
#!/bin/bash
lineNum=0
numFields=`head -1 File.txt | egrep -o "," | wc -l`
cat File.txt | while read LINE
do
lineNum=`expr 1 + $lineNum`
num=`echo $LINE | egrep -o "," | wc -l`
needed=$(( numFields - num ))
for (( i=0 ; i < $needed ; i++ ))
do
sed -i "${lineNum}s/$/,/" File.txt
done
done
Run Code Online (Sandbox Code Playgroud) 我想编写一个命令行工具,如git,它将遵循POSIX标准。这将需要的选项,如--help和-h,--version...等。但是我不知道该怎么做。谁能告诉我如何使用bash脚本执行此操作。请帮我。这对我来说是很新的东西。
例子:如果我的工具名称是Check-code,那么我想使用;
Check-code --help
Run Code Online (Sandbox Code Playgroud)
要么
Check-code --version
Run Code Online (Sandbox Code Playgroud) 我使用linux,bash.
我有一个目录,里面有100个文件夹,每个目录名称不同.
在这100个文件夹中的每个文件夹中都有一个名为first.bars的文件(所以我有100个名为first.bars的文件).虽然所有名为first.bars,但文件实际上略有不同.
我想将所有这些文件移动到一个新文件夹并重命名/编号这些文件,以便我知道哪个文件来自哪个文件夹.所以第一个first.bars文件必须重命名为001.bars,第二个文件必须重命名为002.bars ..等等.
我尝试过以下方法:
ls -d * >> /home/directorywiththe100folders/list.txt
cat list.txt | while read line;
do cd $line;
mv first.bars /home/newfolder
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我不能在一个文件夹中有100个名称相同的文件.所以我只需要知道如何重命名它们.重命名必须连接到cat list.txt,因为第一行是包含移动和重命名的第一个文件的文件夹.该文件将被称为001.bars.
我在一行中有这个:
We were born in the earth beyond the land
Run Code Online (Sandbox Code Playgroud)
我希望它在3个单词行中,如下所示:
We were born
in the earth
beyond the land
Run Code Online (Sandbox Code Playgroud) 我有这个字符串:
Stream #0:0: Video: vp6f, yuv420p, 852x478, 1638 kb/s, 25 tbr, 1k tbn, 1k tbc
Run Code Online (Sandbox Code Playgroud)
我想从中提取25出来.我用:
sed -r 's/.+([0-9]{2} tbr).+/\1/'
Run Code Online (Sandbox Code Playgroud)
它返回我需要的东西.
无论如何,如果相反我会遇到一个字符串
Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 11981 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 30k tbc
Run Code Online (Sandbox Code Playgroud)
它不会再回归我需要的了.
我尝试了不同的替代方法,因此tbr在两种情况下都返回值,但找不到正确的表达式.
偶尔在term模式下使用emacs时,我会错误地运行emacs file而不是仅仅打开文件.这将在当前客户端内创建嵌套的emacs客户端.我的问题是如何关闭内部客户端?
是否可以project使用 MongoDB 的聚合框架进行操作的布尔值?
例如,给定一个像这样的输入文档:
{
"id": 123,
"data": [
{
"val": 1
},
{
"val": 2
},
{
"val": 3
},
{
"val": 4
},
{
"val": 5
}
]
}
Run Code Online (Sandbox Code Playgroud)
$data.val > 3我想返回的操作是:
{
"result": [
{
"bool_val": 0
},
{
"bool_val": 0
},
{
"bool_val": 0
},
{
"bool_val": 1
},
{
"bool_val": 1
}
],
"ok": 1
}
Run Code Online (Sandbox Code Playgroud)
这就是我想出的:
db.test.aggregate([{$match: {id: 123}},
{$unwind: "$data"},
{$project: {"bool_val": {"$data.val": {$gt: 3}}, _id: 0}}
])
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
aggregate …Run Code Online (Sandbox Code Playgroud)