我发现有关 vars() 函数的文档有点神秘:https : //docs.python.org/3/library/functions.html#vars
拥有这个功能的意义何在?为什么你会不只是打电话x.__dict__,而不是vars(x)或locals()直接?
有人会给出该功能的用例吗?
我有一个这样的数据
>sp|Q96A73|P33MX_HUMAN Putative monooxygenase p33MONOX OS=Homo sapiens OX=9606 GN=KIAA1191 PE=1 SV=1
RNDDDDTSVCLGTRQCSWFAGCTNRTWNSSAVPLIGLPNTQDYKWVDRNSGLTWSGNDTCLYSCQNQTKGLLYQLFRNLFCSYGLTEAHGKWRCADASITNDKGHDGHRTPTWWLTGSNLTLSVNNSGLFFLCGNGVYKGFPPKWSGRCGLGYLVPSLTRYLTLNASQITNLRSFIHKVTPHR
>sp|P13674|P4HA1_HUMAN Prolyl 4-hydroxylase subunit alpha-1 OS=Homo sapiens OX=9606 GN=P4HA1 PE=1 SV=2
VECCPNCRGTGMQIRIHQIGPGMVQQIQSVCMECQGHGERISPKDRCKSCNGRKIVREKKILEVHIDKGMKDGQKITFHGEGDQEPGLEPGDIIIVLDQKDHAVFTRRGEDLFMCMDIQLVEALCGFQKPISTLDNRTIVITSHPGQIVKHGDIKCVLNEGMPIYRRPYEKGRLIIEFKVNFPENGFLSPDKLSLLEKLLPERKEVEE
>sp|Q7Z4N8|P4HA3_HUMAN Prolyl 4-hydroxylase subunit alpha-3 OS=Homo sapiens OX=9606 GN=P4HA3 PE=1 SV=1
MTEQMTLRGTLKGHNGWVTQIATTPQFPDMILSASRDKTIIMWKLTRDETNYGIPQRALRGHSHFVSDVVISSDGQFALSGSWDGTLRLWDLTTGTTTRRFVGHTKDVLSVAFSSDNRQIVSGSRDKTIKLWNTLGVCKYTVQDESHSEWVSCVRFSPNSSNPIIVSCGWDKLVKVWNLANCKLK
>sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4
IQVVSRCRLRHTEVLPAEEENDSLGADGTHGAGAMESAAGVLIKLFCVHTKALQDVQIRFQPQL
>sp|P10144|GRAB_HUMAN Granzyme B OS=Homo sapiens OX=9606 GN=GZMB PE=1 SV=2
MQPILLLLAFLLLPRADAGEIIGGHEAKPHSRPYMAYLMIWDQKSLKRCGGFLIRDDFVLTAAHCWGSSINVTLGAHNIKEQEPTQQFIPVKRPIPHPAYNPKNFSNDIMLLQLERKAKRTRAVQPLRLPSNKAQVKPGQTCSVAGWGQTAPLGKHSHTLQEVKMTVQEDRKCES
>sp|Q9UHX1|PUF60_HUMAN Poly(U)-binding-splicing factor PUF60 OS=Homo sapiens OX=9606 GN=PUF60 PE=1 SV=1
MGKDYYQTLGLARGASDEEIKRAYRRQALRYHPDKNKEPGAEEKFKEIAEAYDVLSDPRKREIFDRYGEEGLKGSGPSGGSGGGANGTSFSYTFHGDPHAMFAEFFGGRNPFDTFFGQRNGEEGMDIDDPFSGFPMGMGGFTNVNFGRSRSAQEPARKKQDPPVTHDLRVSLEEIYSGCTKKMKISHK
>sp|Q06416|P5F1B_HUMAN Putative POU domain, class 5, transcription factor 1B OS=Homo sapiens …Run Code Online (Sandbox Code Playgroud) 我在下面有一些示例代码,我使用tar/dd将文件备份到磁带...
time tar -cvf - \
/home/user1 \
/home/user2 | dd bs=128k of=/dev/rmt0 2>&1 | tee -a debug.log
mail -s "testing" admin@domain.com < debug.log
Run Code Online (Sandbox Code Playgroud)
问题是当我运行这个时,以下内容被打印到屏幕上...
a /home/user1/fileA 10 blocks.
a /home/user2/fileB 1 blocks.
0+1 records in.
0+1 records out.
real 0m2.253s
user 0m0.003s
sys 0m0.002s
Run Code Online (Sandbox Code Playgroud)
但只有以下内容被重定向到日志文件...
cat debug.log
0+1 records in.
0+1 records out.
Run Code Online (Sandbox Code Playgroud)
有没有办法将所有输出重定向到日志?
我尝试在tar/dd管道之间添加tee命令,但是没有用.
这是在运行IBM AIX的系统上,因此我无法访问许多GNU工具.
采样字符串:
a = ' \r\rwww someString www\r\r\n\n '
Run Code Online (Sandbox Code Playgroud)
并取样以下两个结果.
[In]: a.strip()
[Out]: 'www someString www'
[In]: a.strip('w ')
[Out]: '\r\rwww someString www\r\r\n\n'
Run Code Online (Sandbox Code Playgroud)
Python docs对str.strip([chars])的评论是:
如果省略或None,则chars参数默认为删除空格
为什么它也删除所有转义字符?
我运行一个shell脚本,但没有得到输出到我的文件,只有日期回显到.log文件的第一行.任何人都可以解释为什么mongodump命令不会附加到.log文件?
#!/bin/sh
DEST=/db_backups/
DAYOFWEEK=`date +%u`
echo "---------------------- $(date) -----------------------" >> mongo_backup_output.log
mongodump --archive=$DEST$DAYOFWEEK.gz --gzip >> mongo_backup_output.log
Run Code Online (Sandbox Code Playgroud) 我想在我的bash脚本中缩进,以便我的脚本看起来更有条理,但不希望打印空格.
如果我有命令
printf "<image>
<<include etc/image.conf>>
</image>" > file.txt
Run Code Online (Sandbox Code Playgroud)
我希望file.txt看起来像
<image>
<<include etc/image.conf>>
</image>
Run Code Online (Sandbox Code Playgroud)
代替
<image>
<<include etc/image.conf>>
</image>
Run Code Online (Sandbox Code Playgroud)
问题是我不希望我的脚本看起来像这样
While Loop
If Statement
printf "<image>
<<include etc/image.conf>>
</image>" > file.txt
Command Here
End If
End While
Run Code Online (Sandbox Code Playgroud)
我只是想让它看起来有点整洁
我写了以下bash脚本:
function getqsubnumber {
# Return how many simulations ($qsubnumber) are currently running
qsubnumber=`qstat | grep p00 | wc -l`
return $qsubnumber
}
getqsubnumber
qs=$?
if [ $qs -le $X ]
then
echo 'Running one more simulation'
$cmd # submit one more job to the cluster
else
echo 'Too many simulations running ... Sleeping for 2 min'
sleep 120
Run Code Online (Sandbox Code Playgroud)
我的想法是我在集群上提交工作.如果有多个X作业同时运行,我想等待2分钟.
该代码适用于X=50和X=200.由于某些未知原因,它不起作用X=400.知道为什么吗?该脚本永远不会等待2分钟,它会继续提交作业.
我有几行(我不知道有多少).我通过烟斗发送给他们grep.我需要找出是否所有的线都被选中了grep.然后我需要写好(如果他们都被选中)或不好.我怎么能这样做?
我试图筛选出的线,包含拒绝的权限从find命令.
如果我跑步:
find ~ -name "fifo" | grep "Permission denied"
该输出是正确的:
find: ‘/home/nroby/.cache/dconf’: Permission denied
find: ‘/home/nroby/.dbus’: Permission denied
find: ‘/home/nroby/.config/enchant’: Permission denied
但是,如果我使用该-v选项:find ~ -name "fifo" | grep -v "Permission denied"
该输出是:
find: ‘/home/nroby/.cache/dconf’: Permission denied
find: ‘/home/nroby/.dbus’: Permission denied
/home/nroby/Desktop/Linux/fifo
find: ‘/home/nroby/.config/enchant’: Permission denied
Naidim 回答了这个问题: 如何使用 bash 脚本替换文件名中的空格
这是我能为我工作的唯一答案,但我不明白我在看什么。
for f in *\ *; do mv "$f" "${f// /_}"; done
Run Code Online (Sandbox Code Playgroud)