在 python 中重写一个 shell/awk?
Rewriting an shell/awk in python?
我在 awk 中基本上有两行代码,我试图在 python 中重写它们,它们如下:
1. filename=$(echo "$file" | awk -F'[/]' '{ print }')
2. experiment=$(echo "$filename" | awk -F'[.]' '{ print }')
其中 file
是 *.fastq.gz 文件。例如NoBuffer-18_S50.fastq.gz
如果我没理解错的话,第一行是根据“/”解析读取每一行,然后打印每一行的第二个字段。第二行做了类似的事情,取文件名,用“.”分隔。然后打印每行的第一个字段。
我想知道我是否可以在 python 中使用正则表达式或 .split() 之类的东西来重写这些。或者,如果这甚至是可取的?任何帮助将不胜感激!
您似乎在尝试获取不带扩展名的文件名。一种可能的方法是使用您提到的拆分方法。
path= "/path/lvl/sublvl/NoBuffer-18_S50.fastq.gz"
filename = path.split('/')[-1]
experiment = filename.split('.')[0]
print(filename)
print(experiment)
PS.: 我用斜线分割中的[-1]得到最后一段路径,不管有多少层。
您可以为此使用 pathlib
(自 Python 3.4 起可用)。
from pathlib import Path
pth = "/path/to/NoBuffer-18_S50.fastz.gz"
filename = Path(pth).name
experiment = Path(pth).stem
我在 awk 中基本上有两行代码,我试图在 python 中重写它们,它们如下:
1. filename=$(echo "$file" | awk -F'[/]' '{ print }')
2. experiment=$(echo "$filename" | awk -F'[.]' '{ print }')
其中 file
是 *.fastq.gz 文件。例如NoBuffer-18_S50.fastq.gz
如果我没理解错的话,第一行是根据“/”解析读取每一行,然后打印每一行的第二个字段。第二行做了类似的事情,取文件名,用“.”分隔。然后打印每行的第一个字段。
我想知道我是否可以在 python 中使用正则表达式或 .split() 之类的东西来重写这些。或者,如果这甚至是可取的?任何帮助将不胜感激!
您似乎在尝试获取不带扩展名的文件名。一种可能的方法是使用您提到的拆分方法。
path= "/path/lvl/sublvl/NoBuffer-18_S50.fastq.gz"
filename = path.split('/')[-1]
experiment = filename.split('.')[0]
print(filename)
print(experiment)
PS.: 我用斜线分割中的[-1]得到最后一段路径,不管有多少层。
您可以为此使用 pathlib
(自 Python 3.4 起可用)。
from pathlib import Path
pth = "/path/to/NoBuffer-18_S50.fastz.gz"
filename = Path(pth).name
experiment = Path(pth).stem