полный путь к файлу для архива в Python - PullRequest
1 голос
/ 21 октября 2011

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

import zipfile
import os
import sys

zipped_files_dir = 'Z:\Dev\some_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:\Dev\new_folder.zip  

Моя проблема заключается в том, что у меня должен быть "\ some_files \ new_folder.zip" в возвращаемом каталоге. Есть идеи?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

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

import zipfile
import os
import sys

zipped_files_dir = 'Z:\Dev\some_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:\Dev\some_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 голос
/ 21 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...