У меня есть большой файл, который я хочу разделить, используя awk
, и назовите его на основе значения из первого столбца.
Команда awk
на терминале будет работать как:
cat phased.MySpF1.vcf | awk '!/^#/{print>$1}'
, таким образом, создавая отдельные файлы, такие как 1, 2, 3, в зависимости от значения первого столбца.
Я хочу поместить эту команду в файл python2, чтобы я мог хранить разделенные файлы внутри другогоподкаталог, который упрощает доступ к каждому чанку в последующей части.
# create a directory to store the splitted files:
if os.path.exists('SplitVCF'):
shutil.rmtree('SplitVCF', ignore_errors=False, onerror=None)
os.makedirs('SplitVCF')
# now split the vcf file
split_cmd = ['cat', vcf_path, '|', 'awk', '!/^#/{print>$1}']
subprocess.Popen(split_cmd, stdout='SplitVCF/')
#or,
subprocess.call(split_cmd, stdout='SplitVCF/')
Но я получаю сообщение об ошибке:
Traceback (most recent call last):
File "phaser.py", line 2167, in <module>
main();
File "phaser.py", line 227, in main
subprocess.Popen(split_cmd, stdout='SplitVCF/')
File "/usr/lib/python2.7/subprocess.py", line 386, in __init__
errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr)
File "/usr/lib/python2.7/subprocess.py", line 823, in _get_handles
c2pwrite = stdout.fileno()
AttributeError: 'str' object has no attribute 'fileno'