полный путь к файлу для архивированной папки в python

#python #file #path #zip

#python #файл #путь #zip

Вопрос:

У меня есть следующий код, который пытается получить полный путь к файлу (включая папку):

 import zipfile
import os
import sys

zipped_files_dir = 'Z:Devsome_files'

def get_folder_names():
    path_list = []
    for folder_name in os.listdir(zipped_files_dir):
        path_list.append(folder_name)
    return path_list

def get_folder_directories(folder_list):
    for folder in folder_list:
        pathname = os.path.abspath(folder)
        print(pathname)

def main():
    get_folder_directories(get_folder_names())

>>>Z:Devnew_folder.zip  
  

Моя проблема в том, что я должен иметь «some_filesnew_folder.zip » в возвращенном каталоге. Есть идеи?

Спасибо!

Ответ №1:

Вы могли бы использовать os.path.join(zipped_files_dir, folder) в get_folder_directories функции:

 import zipfile
import os
import sys

zipped_files_dir = 'Z:Devsome_files'

def get_folder_names():
    path_list = []
    for folder_name in os.listdir(zipped_files_dir):
        path_list.append(folder_name)
    return path_list

def get_folder_directories(folder_list):
    for folder in folder_list:
        pathname = os.path.abspath(os.path.join(zipped_files_dir, folder))
        print(pathname)

def main():
    get_folder_directories(get_folder_names())
  

Или, path_list.append(os.path.join(zipped_files_dir, folder_name)) в get_folder_names() :

 import zipfile
import os
import sys

zipped_files_dir = 'Z:Devsome_files'

def get_folder_names():
    path_list = []
    for folder_name in os.listdir(zipped_files_dir):
        path_list.append(os.path.join(zipped_files_dir, folder_name))
    return path_list

def get_folder_directories(folder_list):
    for folder in folder_list:
        pathname = os.path.abspath(folder)
        print(pathname)

def main():
    get_folder_directories(get_folder_names())
  

Комментарии:

1. Должен согласиться, вы должны сделать os.path.join в get_folder_name.

Ответ №2:

У Chown есть правильное решение.

В вашем коде вы передаете abs_path строку «new_folder.zip «. Но abs_path не знает, откуда он взялся, поэтому он считает, что он должен быть в текущем рабочем каталоге, поэтому вы получаете r «Z:Devnew_folder.zip «. Вам нужно использовать os.path.join, чтобы объединить имя файла с путем, по которому вы его найдете.