我正在使用ArgParse在Python中提供命令行参数.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--quality", type=int,help="enter some quality limit")
args = parser.parse_args()
qual=args.quality
if args.quality:
qual=0
$ python a.py --quality
a.py: error: argument --quality: expected one argument
Run Code Online (Sandbox Code Playgroud)
如果没有提供任何值,我想将它用作0,我也尝试在parser.add_argument中将其设置为"default = 0",并且还使用if语句.但是,我得到上面的错误.
基本上,我想将它用作标志,并在没有提供值的情况下给出默认值.
我正在使用此脚本来连接从 Samples 中读取的内容。每个子目录都有某些 R1.fastq.gz 文件和 R2.fastq.gz,我想将它们合并到一个 R1.fastq.gz 和 R2.fastq.gz 文件中。
sourcedir=/sourcepath/
destdir=/destinationpath/
for f in $sourcedir/*
do
fbase=$(basename "$f")
echo "Inside $fbase"
zcat $f/*R1*.fastq.gz | gzip >$destdir/"$fbase"_R1.fastq.gz
zcat $f/*R2*.fastq.gz | gzip >$destdir/"$fbase"_R2.fastq.gz
done
Run Code Online (Sandbox Code Playgroud)
我想通过比较各个 fastq.gz 文件的总行数和合并文件中的总行数来验证 R1、R2 的读取是否分别串联。
wc -l *R1*.fastq.gz (Individual files)
12832112 total
wc -l Sample_51770BL1_R1.fastq.gz (merged file)
Total:10397604
Run Code Online (Sandbox Code Playgroud)
两种情况下的数量不应该相等吗?或者是否有其他方法来验证合并的文件是否正确完成?
另外,有什么方法可以加快进程吗?我尝试使用此链接中的 & 如何在我的 bash 脚本中使用并行编程/多线程? 但它根本没有运行。
zcat $f/*R1*.fastq.gz | gzip >$destdir/"$fbase"_R1.fastq.gz &
zcat $f/*R2*.fastq.gz | gzip >$destdir/"$fbase"_R2.fastq.gz &
Run Code Online (Sandbox Code Playgroud) 我正在使用 ArgParse 在 Python 中提供命令行参数。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--quality", help="enter some quality limit")
args = parser.parse_args()
print "You gave quality = %s" % str(args.quality)
Run Code Online (Sandbox Code Playgroud)
我保存了这个a.py然后运行这个:
$ python a.py --quality 10
You gave quality = 10
Run Code Online (Sandbox Code Playgroud)
我也希望我的代码即使没有提供命令行参数也能运行。我想让它成为可选的。如果它提供了,那么它需要一个可以进一步使用的特定值。
我的代码中有这样的东西:
if int(quality)==10:
Run Code Online (Sandbox Code Playgroud)
所以如果我不带参数运行:
$ python a.py
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
TypeError: int() 参数必须是字符串或数字,而不是“NoneType”