>source

같은 이름의 파일 (예 :

File.txt
File(2).txt
File(3).txt
File(4).txt

등. 같은 디렉토리에 같은 이름의 파일이 몇 개 있더라도 스크립트로 모두 편집되도록하려면 어떻게해야합니까? 파이썬으로 하여금 무언가를 취하게 만드는 것 File(Some number here).txt  숫자가 무엇이든 상관없이 수정 하시겠습니까?

새로운 설명

param = 'ORIGINAL PARAMS/PARAM.SFO'
with open (param, 'rb') as p, open('PATCHED PARAMS/PARAM.SFO', 'wb') as o:
        o.write(p.read().replace(b'\x85', b'\xA5'))

이 디렉토리 'ORIGINAL PARAMS' 에서 파일을 열려면  위에서 설명한 것과 동일한 이름으로. 그런 다음 편집 한 다음 'PATCHED PARAMS' 에 출력해야합니다.  이름은 같지만 바이트 x85는 xA5로 변경되었습니다.

@BoboDarph도 귀하의 코드가 작동하지 않았습니다.

  • 답변 # 1

    댓글 섹션을 살펴본 후 OP의 문제에 대한 해결책이 있다고 생각합니다. 평소와 같이이 질문은 OP가 무언가를 요구하지만 다른 답을 기대하는 X 대 Y 문제인 것 같습니다.

    따라서 OP의 의견에 따르면 가능한 구현이 있습니다.

    import os
    import inspect
    
    # Assuming you have a project with the following tree structure:
    ''''<current_dir>
         my_script.py
         ORIGINAL PARAMS
             PARAM.SFO
         ...
         PATCHED PARAMS
             notPARAM.SFO
             PARAM.SFO
             PARAM(1).SFO
             PARAM(2).SFO
             ...
    '''''
    # The following script will list the contents of PATCHED PARAMS, filter all files that start with PARAM, then for each
    # open the source_filename, read it, replace all \x85 binary characters with \xA5 characters in the bytestream
    # and write the resulting bytestream to the previously opened PARAM* file.
    # Do note that opening a file with wb will either create it if it does not exist, or completely overwrite it
    # In order to avoid problems with relative paths, we get the current directory of the script
    currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
    # Knowing the relative structure of our project, we could always assume that the target of our script is in the
    # same PATCHED PARAMS folder, so we save that path as another script variable
    patched_params_directory = 'PATCHED PARAMS'
    patched_params = os.path.join(currentdir, patched_params_directory)
    # This would be the initial source file that contains the values (the one you read and get the value to replace)
    original_directory = 'ORIGINAL PARAMS'
    original_filename = 'PARAM.SFO'
    # And this would be it's full path. This is here to avoid issues with relative paths
    source_filename = os.path.join(currentdir, os.path.join(original_directory, original_filename))
    # This is the prefix of all the files we want to alter
    params_file_prefix = 'PARAM'
    # For every file in the contents of the PATCHED PARAMS directory that starts with PARAM
    # So for example PARAM(1) would be accepted, while 1PARAM would not
    # param or PaRaM would also not be accepted. If you want those to be accepted, cast both filenames and prefix to lower
    for file in [_ for _ in os.listdir(patched_params) if _.startswith(params_file_prefix)]:
        # Calculate the destination filename based on our filter
        dest_filename = os.path.join(patched_params, file)
        # Open both source and dest files, parse the source, write changes to dest
        with open(dest_filename, 'wb') as f, open(source_filename, 'rb') as p:
            f.write(p.read().replace(b'\x85', b'\xA5'))
    
    

  • 이전 Vim 스크립트 실행 명령은 매 두 번째 대체를 건너 뜁니다
  • 다음 javascript - 두 배열 간의 대칭 적 차이 찾기