簡體   English   中英

如何檢測我運行腳本的文件夾路徑?

[英]How to detect folder path i ran script for?

下面的腳本是解壓縮 zip 文件並根據電視節目劇集名稱重命名提取的字幕名稱。 然后將它們轉換為 utf-8。

這是問題所在:

我想在 linux 操作系統和我想要的任何電視節目文件夾中運行此腳本。
但我希望從文件夾中檢測fixing function的路徑,我運行 python 腳本,因為它不是固定路徑,有很多電視節目文件夾。

對不起我的英語不好


import zipfile
import os
import re
from chardet import detect
import fnmatch

def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result



def get_encoding_type(file):
    with open(file, 'rb') as f:
        rawdata = f.read()
    return detect(rawdata)['encoding']

def correctSubtitleEncoding(filename, newFilename, encoding_from, encoding_to='UTF-8'):
    with open(filename, 'r', encoding=encoding_from) as fr:
        with open(newFilename, 'w', encoding=encoding_to) as fw:
            for line in fr:
                fw.write(line[:-1]+'\r\n')

def fixing(path):

    oldsrtfiles = [f for f in os.listdir(path) if '.srt' in f or '.ass' in f ]
    print(len(oldsrtfiles), ' old subtitles found')
    if len(oldsrtfiles) != 0:
        for oldsrt in oldsrtfiles:
            os.remove(f'{path}{oldsrt}')
            print(f'{oldsrt} removed')

    filename = find('*.zip', path)[0]
    with zipfile.ZipFile(f'{filename}',"r") as zip_ref:
        zip_ref.extractall(path)
        print('files extarcted')

    os.remove(f'{filename}')
    print("Zip File Removed!")

    newsrtFiles = [f for f in os.listdir(path) if '.srt' in f or '.ass' in f ]
    print(len(newsrtFiles), ' subtitles found')


    showsTitles = [f for f in os.listdir(path) if '.mkv' in f or '.avi' in f or '.mp4' in f]
    print(len(showsTitles), ' tv show found')

    pattern = r'S(\d{1,2})E(\d{1,2})'

    for show in showsTitles:
        SEneeded = re.search(pattern, show).group(0)
        for i, sub in enumerate(newsrtFiles):
            if SEneeded in sub:
                if sub[-3:] == 'srt':
                    newsrtFiles[i] = show.replace(show[-3:],'ar.srt')
                    os.rename(f'{path}{sub}',f'{path}{newsrtFiles[i]}')
                elif sub[-3:] == 'ass':
                    subs[i] = show.replace(show[-3:],'ar.ass')

    forencoding = [f for f in os.listdir(path) if '.srt' in f or '.ass' in f ]
    for newsrtfile in forencoding:
        from_codec = get_encoding_type(f'{path}{newsrtfile}')
        print(from_codec)
        correctSubtitleEncoding(f'{path}{newsrtfile}', f'{path}{newsrtfile}', from_codec, encoding_to='UTF-8')

function 獲取當前工作目錄

os.getcwd()

要調用這個 function 你需要導入 os 模塊

import os

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM