小编Rge*_*eek的帖子

未提供值时命令行参数的默认值

我正在使用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语句.但是,我得到上面的错误.

基本上,我想将它用作标志,并在没有提供值的情况下给出默认值.

python command-line-arguments argparse

6
推荐指数
1
解决办法
4784
查看次数

在 Unix 中合并 fastq.gz 文件

我正在使用此脚本来连接从 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)

parallel-processing bash shell

2
推荐指数
1
解决办法
5631
查看次数

在 Python 中使命令行参数可选

我正在使用 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”

python command-line-arguments argparse

1
推荐指数
1
解决办法
2342
查看次数