#python #python-3.x
#python #python-3.x
Вопрос:
Когда я пытаюсь просто распечатать содержимое, оно работает и в других местах.
Но когда я хочу, чтобы файлы также отображали их размер, он работает только по текущему пути.
import os
import sys
#check if a path is provided
#else use the current loction
arg_list = len(sys.argv) -1
if arg_list != 1:
path = '.'
elif arg_list == 1:
path = sys.argv[1]
#list the files and directorys
#if it is a file also show it's size
catalog = os.listdir(path)
for item in catalog:
#just print() here works also for other directories
if os.path.isdir(item):
print(f' {item}')
elif os.path.isfile(item):
size = os.path.getsize(item)
print(f'{size} {item}')
Комментарии:
1. Что происходит с отображением размера файла для других каталогов?
Ответ №1:
Эта инструкция: catalog = os.listdir(path)
верните список файлов / папок внутри данного каталога без их полного пути, только имя.
Поэтому, когда вы пытаетесь изменить папку os.path.isdir
и os.path.isfile
не находите ссылку на этот файл.
Вы должны исправить свой скрипт таким образом:
import os
import sys
#check if a path is provided
#else use the current loction
arg_list = len(sys.argv) -1
if arg_list != 1:
path = '.'
elif arg_list == 1:
path = sys.argv[1]
#list the files and directorys
#if it is a file also show it's size
catalog = os.listdir(path)
for item in catalog:
file = os.path.join(path, item) # <== Here you set the correct name with the full path for the file
#just print() here works also for other directories
if os.path.isdir(file): # <== then change the reference here
print(f' {item}')
elif os.path.isfile(file): # <== here
size = os.path.getsize(file) # <== and finally here
print(f'{size} {item}')
Комментарии:
1.
os.path.join()
вместо » было бы лучше.