이전 디렉토리에서 수정 된 파일로 새 디렉토리를 만드는 루프를 만들려고합니다.

리얀 다칼

.fasta 파일이있는 폴더와 fasta 폴더를 수정해야하는 수정 목록이있는 csv 파일이 있습니다.

일반적인 fasta 파일 (두 번째 줄은 실제 데이터) :

> TCTCG (this is called the header)
TAGACTGTGTCGATATGCAATAAACATATTAACTACAGGTATTCGGGTAT

csv 파일에는 세 개의 열이 있습니다. 첫 번째 열은 이전 디렉토리의 파일 이름에 해당하는 이름이고 세 번째 열에는 새 헤더가되어야하는 새 헤더가 있으므로 >TCTCG세 번째 열의 항목으로 대체되고 두 번째 행은 fasta 파일은 동일하게 유지됩니다.

이 작업을 수행하는 가장 좋은 방법은 csv 파일의 첫 번째 열 (이전 파일 이름)을 추출하고 첫 번째 열의 이름을 사용하여 이전 폴더를 반복하고 두 번째 줄을 모두 복사하는 것입니다. 그런 다음 csv 파일의 세 번째 열에서 모든 새 헤더를 복사 한 다음 새 디렉토리를 만들고 세 번째 열 항목과 이전 파일의 두 번째 줄을 각각의 새 파일 (이전 이름 ​​사용)에 붙여 넣습니다.

모든 이전 파일에서 두 번째 줄을 추출하고 csv 파일의 세 번째 열을 읽을 수 있지만 새 디렉터리를 만들고 새 줄을 "쓰기"/ "추가"하려고하면 아무 일도 일어나지 않습니다. 파일 I / O에 대한 경험이 거의 없기 때문에 지금은 무엇이 잘못되었는지 알 수 없습니다.

import glob, os
from typing import Counter

def main():
    header_changes_knife = open('header_changes.csv','r') # the name of the csv file where the first column is the list of names of files and the third columns is the headers
    for i in header_changes_knife:
        firstColumn = [line.split(',')[0] for line in header_changes_knife] # makes a list of the first column of the header changes file, the name of the fasta file
        header_changes_knife.seek(0)
        third_column_read = [line.split(',')[2] for line in header_changes_knife] #makes a list of the third column of the header changes file, the new headers
        my_pass_to_fasta_opener = my_fasta_opener(firstColumn) # passes the first column to the function that actually reads and opens the fasta files
        for my_new_dir in header_changes_knife:
            os.chdir('C:\\Users\\dhaka\\OneDrive\\Desktop\\Semester material\\Data Skills class\\All Homework\\two\\10\\pauls_dna_seqs\\Updated directory')
            make_new_file = open(firstColumn,"w")
            make_new_file.writelines(firstColumn)
            make_new_file.writelines(third_column_read)

def my_fasta_opener(my_list):
    counter = 0
    for my_file in my_list:
        os.chdir('C:\\Users\\dhaka\\OneDrive\\Desktop\\Semester material\\Data Skills class\\All Homework\\two\\10\\pauls_dna_seqs')
        file_open = open(my_list[counter])
        file_open.readline()
        second_line = file_open.readline()
        return second_line
        counter += 1

main()
Chvolkmann

내장 csv모듈사용하여 많은 노력없이 CSV 파일을 구문 분석 할 수 있습니다 . 여기에서는 CSV 파일에 각 헤더가있는 열이 두 개 이상 있다고 가정합니다.

FASTA 파일은 우리가 관심있는 두 가지로 나눌 수 있습니다 : headerdata. 모든 파일에 대해 CSV에 따라 헤더를 업데이트합니다. 그런 다음 업데이트 된 데이터 구조를 디스크에 저장합니다.

import csv

def read_csv(filename):
    """ Returns a list of rows, where each row is a dict """
    print(f'Reading csv file {filename}')
    with open(filename) as f:
        return list(csv.DictReader(f))

def read_fasta_file(filename):
    """ Returns a string tuple (header, rest_of_the_file) """
    print(f'Reading fasta file {filename}')
    with open(filename) as f:
        content = f.read()
    lines = content.spltlines()
    
    # header is the first line
    # data is the rest of the file
    header, data = lines[0], '\n'.join(lines[1:])
    return header, data


# Assumption: We have at least the columns
# target_file: The file you want to update
# new_header: The updated header
updates = read_csv('myfile.csv')

fasta_files = ['data1.fasta', 'data2.fasta']
# This is dict of the form
# {
#   'data1.fasta': ('TCTCG', '...'),
#   'data2.fasta': ('TCTCG', '...'),
# }
fasta_files = {filename: read_fasta_file(filename) for filename in fasta_files}

# Produce a new dict with the same format, but updated header values
updated_files = {}
for update in updates:
    target_filename = updates['target_file']
    old_header, data = fasta_files[target_filename]
    new_header = updates['new_header']
    updated_files[target_filename] = (new_header, data)

# Write the changes to disk
for filename, (header, data) in updated_files:
    print(f'Outputting to updated_{filename}')
    content = header + '\n' + data
    with open(f'updated_{filename}', 'w') as f:
        f.write(content)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AWK-새 하위 디렉토리를 만들고 파일 이름에 따라 파일을 이동합니다.

분류에서Dev

mkdir로 새 디렉토리를 만들 수 없습니다.

분류에서Dev

파일이 포함 된 각 디렉토리 아래에 하위 디렉토리를 만듭니다.

분류에서Dev

디렉토리를 평면화하지만 새 파일 이름에 디렉토리 이름 유지

분류에서Dev

Windows의 디렉토리 계층에서 날짜 / 타임 스탬프 이후에 생성 된 새 파일 / 디렉토리를 가져옵니다.

분류에서Dev

Windows의 디렉토리 계층에서 날짜 / 타임 스탬프 이후에 생성 된 새 파일 / 디렉토리를 가져옵니다.

분류에서Dev

디렉토리를 점진적으로 만들고 파일을 디렉토리로 이동-루프

분류에서Dev

txt 파일에서 이름을 읽고 새 디렉토리를 만들기위한 배치 파일

분류에서Dev

안드로이드 (10)에 디렉토리를 만들 수 없습니다

분류에서Dev

내 Docker 이미지에 로컬 디렉토리를 마운트했지만 해당 디렉토리에서 파일을 읽을 수 없습니다.

분류에서Dev

새 디렉토리를 만들고 동시에 해당 디렉토리로 변경하는 단일 "mkdir"명령?

분류에서Dev

bash에서 : 특정 파일이 포함 된 디렉토리를 찾고 삭제하는 방법 (파일이 X 분보다 오래된 경우에만)

분류에서Dev

Java는 새로 생성 된 디렉토리를 잠급니다.

분류에서Dev

트리와 같은 파일 디렉토리 텍스트 파일에서 중첩 된 사전 객체를 어떻게 만들 수 있습니까?

분류에서Dev

디렉토리 C의 파일에서 디렉토리 B에 tar 아카이브를 만드는 디렉토리 A에서 tar 명령을 실행할 수 있습니까?

분류에서Dev

특정 디렉토리를 진행하는 디렉토리에서만 파일을 포함하지 않는 디렉토리 찾기

분류에서Dev

"!"로 시작하는 디렉토리를 제외하고 특정 파일이 포함 된 디렉토리를 삭제하십시오.

분류에서Dev

iPhone 문서 디렉토리 위치에 저장된 파일에서 UIImage를 다시로드 할 수 없음

분류에서Dev

상위 디렉토리에 동일한 이름의 파일로 하위 디렉토리를 만듭니다.

분류에서Dev

지정된 디렉토리를 원하는 위치에 아카이브 파일로 만드는 방법은 무엇입니까?

분류에서Dev

파일 이름의 일부로 명명 된 새 디렉토리를 만들고 파일을 이동하기위한 배치 스크립트

분류에서Dev

디렉토리가 항상 같지 않을 때 디렉토리 내의 각 디렉토리 이름에서 변수를 만드는 루프를 만들 수 있습니까?

분류에서Dev

디렉토리 트리에서 특정 파일 확장자를 가진 각 파일의 디렉토리 이름을 얻는 방법은 무엇입니까?

분류에서Dev

Unix는 파일 이름을 기반으로 디렉토리를 만들고 파일을 디렉토리로 이동합니다.

분류에서Dev

특정 디렉토리를 찾고 디렉토리에서 파일 이름을 변경하십시오.

분류에서Dev

파일 또는 디렉토리를 찾을 수 없지만 bash 명령에 언급 된 파일 또는 디렉토리가 없습니까?

분류에서Dev

특정 차원의 디렉토리에서 각 이미지를 bash의 새 디렉토리로 삭제하거나 이동하는 방법

분류에서Dev

디렉토리에 디렉토리 이름을 인쇄하고 현재 디렉토리와 상위 디렉토리를 제외하는 C 프로그램

분류에서Dev

전체 디렉토리 경로를 입력하지 않고 터미널에서 파일 또는 디렉토리를 열려면 어떻게합니까?

Related 관련 기사

  1. 1

    AWK-새 하위 디렉토리를 만들고 파일 이름에 따라 파일을 이동합니다.

  2. 2

    mkdir로 새 디렉토리를 만들 수 없습니다.

  3. 3

    파일이 포함 된 각 디렉토리 아래에 하위 디렉토리를 만듭니다.

  4. 4

    디렉토리를 평면화하지만 새 파일 이름에 디렉토리 이름 유지

  5. 5

    Windows의 디렉토리 계층에서 날짜 / 타임 스탬프 이후에 생성 된 새 파일 / 디렉토리를 가져옵니다.

  6. 6

    Windows의 디렉토리 계층에서 날짜 / 타임 스탬프 이후에 생성 된 새 파일 / 디렉토리를 가져옵니다.

  7. 7

    디렉토리를 점진적으로 만들고 파일을 디렉토리로 이동-루프

  8. 8

    txt 파일에서 이름을 읽고 새 디렉토리를 만들기위한 배치 파일

  9. 9

    안드로이드 (10)에 디렉토리를 만들 수 없습니다

  10. 10

    내 Docker 이미지에 로컬 디렉토리를 마운트했지만 해당 디렉토리에서 파일을 읽을 수 없습니다.

  11. 11

    새 디렉토리를 만들고 동시에 해당 디렉토리로 변경하는 단일 "mkdir"명령?

  12. 12

    bash에서 : 특정 파일이 포함 된 디렉토리를 찾고 삭제하는 방법 (파일이 X 분보다 오래된 경우에만)

  13. 13

    Java는 새로 생성 된 디렉토리를 잠급니다.

  14. 14

    트리와 같은 파일 디렉토리 텍스트 파일에서 중첩 된 사전 객체를 어떻게 만들 수 있습니까?

  15. 15

    디렉토리 C의 파일에서 디렉토리 B에 tar 아카이브를 만드는 디렉토리 A에서 tar 명령을 실행할 수 있습니까?

  16. 16

    특정 디렉토리를 진행하는 디렉토리에서만 파일을 포함하지 않는 디렉토리 찾기

  17. 17

    "!"로 시작하는 디렉토리를 제외하고 특정 파일이 포함 된 디렉토리를 삭제하십시오.

  18. 18

    iPhone 문서 디렉토리 위치에 저장된 파일에서 UIImage를 다시로드 할 수 없음

  19. 19

    상위 디렉토리에 동일한 이름의 파일로 하위 디렉토리를 만듭니다.

  20. 20

    지정된 디렉토리를 원하는 위치에 아카이브 파일로 만드는 방법은 무엇입니까?

  21. 21

    파일 이름의 일부로 명명 된 새 디렉토리를 만들고 파일을 이동하기위한 배치 스크립트

  22. 22

    디렉토리가 항상 같지 않을 때 디렉토리 내의 각 디렉토리 이름에서 변수를 만드는 루프를 만들 수 있습니까?

  23. 23

    디렉토리 트리에서 특정 파일 확장자를 가진 각 파일의 디렉토리 이름을 얻는 방법은 무엇입니까?

  24. 24

    Unix는 파일 이름을 기반으로 디렉토리를 만들고 파일을 디렉토리로 이동합니다.

  25. 25

    특정 디렉토리를 찾고 디렉토리에서 파일 이름을 변경하십시오.

  26. 26

    파일 또는 디렉토리를 찾을 수 없지만 bash 명령에 언급 된 파일 또는 디렉토리가 없습니까?

  27. 27

    특정 차원의 디렉토리에서 각 이미지를 bash의 새 디렉토리로 삭제하거나 이동하는 방법

  28. 28

    디렉토리에 디렉토리 이름을 인쇄하고 현재 디렉토리와 상위 디렉토리를 제외하는 C 프로그램

  29. 29

    전체 디렉토리 경로를 입력하지 않고 터미널에서 파일 또는 디렉토리를 열려면 어떻게합니까?

뜨겁다태그

보관