python 바 이 두 네트워크 비 회원 이 500 개가 넘 는 파일 을 업로드 하 는 방법

사례 이야기:
바 이 두 네트워크 는 비 회원 이 파일 을 대량으로 업로드 하면"업로드 파일 수가 500 개 를 넘 으 면 현재 슈퍼 회원 이 개통 되면 계속 업로드 할 수 있 습 니 다"라 고 팝 업 할 수 있 습 니 다.사실은 500 장의 사진 을 끌 어 들 이 는 것 을 제한 하 는 것 이지 500 장의 업로드 가 제한 되 는 것 이 아 닙 니 다.

비 회원 은 어떻게 많은 파일 을 500 개의 폴 더 로 나 누 어 끌 어 들 이 는 수량 제한 을 받 지 않 습 니까?
준비 단계
  • os.walk()함수,전체 경로 의 폴 더 목록 과 파일 목록 을 트 리 로 옮 겨 다 닐 수 있 습 니 다
  • Path(경로).parent 속성,이"경로"의 부모 경로
  • 를 가 져 올 수 있 습 니 다.
  • os.path.relpath("D:\aaa\bbb\\ccc",start="D:\aaa")함수 로"bbb\ccc"문자열 을 되 돌려 경로 재단 을 실현 할 수 있 습 니 다.
  • os.sep 는 모든 경로 구분자
  • 를 대표 할 수 있 습 니 다.
  • os.rename()함수 로 이동 기능
  • 을 실현 할 수 있 습 니 다.
  • sys.argv[1]'분할 할 경로'매개 변 수 를 받 는 입력
  • Python 대상 클래스 형식
    
    # python3.8
    # coding=utf-8
     
    import os
    import sys
    from pathlib import Path
     
     
    class BaiduPanCutter(object):
      '''    500      '''
     
      def __init__(self, root_path, count=500):
        self.root_path = root_path
        self.count = count
        self.folder_file_dict = {} #               
        self.get_folders_files() #                     
     
      def get_folders_files(self):
        '''                    '''
        for folders, _, files in os.walk(self.root_path):
          self.folder_file_dict[folders] = files
     
      def _split(self, arr, count):
        '''      , 500   '''
        arrs = []
        while len(arr) > count:
          piece = arr[:count]
          arrs.append(piece)
          arr = arr[count:]
        arrs.append(arr)
        return arrs
     
      #             
      def cut_file(self):
        '''           '''
        for each_folder in self.folder_file_dict.keys():
          num = 1 #  500   ,  1 
     
          #      (      )     , _  
          temp_path = os.path.relpath(each_folder, Path(self.root_path).parent)
          temp_path = temp_path.replace(os.sep, "_")
          print(temp_path)
     
          files_list = self.folder_file_dict[each_folder]
          file_group = self._split(files_list, self.count) #  500   
     
          if len(file_group) > 1: #    500      
            for each_group in file_group: #    500      
              new_folder = os.path.join(self.root_path, temp_path + "_" + str(num)) #    
              if not os.path.exists(new_folder):
                os.mkdir(new_folder)
              for each_file in each_group:
                old_file = os.path.join(each_folder, each_file)
                new_file = os.path.join(new_folder, each_file)
                print("   %s     %s" % (old_file, new_file))
                os.rename(old_file, new_file)
              num = num + 1
          else: #    500      
            new_folder = os.path.join(self.root_path, temp_path) #    
            if not os.path.exists(new_folder):
              os.mkdir(new_folder)
            for each_file in file_group[0]: #
              old_file = os.path.join(each_folder, each_file)
              new_file = os.path.join(new_folder, each_file)
              print("   %s     %s" % (old_file, new_file))
              os.rename(old_file, new_file)
     
     
    if __name__ == '__main__':
      try:
        arg1 = sys.argv[1]
        if os.path.isdir(arg1):
          b_obj = BaiduPanCutter(arg1, 500)
          b_obj.cut_file()
        else:
          print("    ,    :python %s      " % sys.argv[0])
      except IndexError:
        print("            ,     :python %s      " % sys.argv[0])
      os.system("pause")
    실행 방식 및 효과
    실행 방식:상기 코드 를 다음 과 같이 명명 합 니 다:baidupan_500_cutter.py
    통과 명령:python baidupan_500_cutter.py D:\DCIM\사진 실행

    모든 폴 더 는 500 개의 파일 을 초과 하지 않 습 니 다.다음 에 하나의 폴 더 를 바 이 두 네트워크(컴퓨터 클 라 이언 트)에 끌 어 다 놓 으 면 됩 니 다.
    비고 정보
  • 이 스 크 립 트 는 파일 이나 폴 더 를 삭제 하 는 작업 과 관련 이 없 으 며 파일 을 잃 어 버 리 지 않 습 니 다.
  • 영어 가 아 닌 폴 더 나 파일 분할 작업 을 호 환 합 니 다.
  • 이상 은 python 이 바 이 두 네트워크 비 회원 이 500 개가 넘 는 파일 을 업로드 하 는 상세 한 내용 입 니 다.python 바 이 두 네트워크 에 500 개가 넘 는 파일 을 업로드 하 는 데 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기