Загрузите несколько .npy из папки [duplicate]

Другой способ опробовать. Кроме того, select можно заменить, когда вы устанавливаете начальный столбец в объект Range.

Dim rng as Range

Set rng = WorkSheets(1).Range("A1") '-- you may change the sheet name according to yours.

'-- here is your loop
i = 1
Do
   '-- do something: e.g. show the address of the column that you are currently in
   Msgbox rng.offset(0,i).Address 
   i = i + 1
Loop Until i > 10

** Два метода получения имени столбца с использованием номера столбца **

  • Split ()

code

colName = Split(Range.Offset(0,i).Address, "$")(1)
  • Обработка строк:

код

Function myColName(colNum as Long) as String
    myColName = Left(Range(0, colNum).Address(False, False), _ 
    1 - (colNum > 10)) 
End Function 
296
задан Alan W. Smith 23 August 2017 в 21:49
поделиться

6 ответов

Исходный ответ:

for filename in os.listdir(directory):
    if filename.endswith(".asm") or filename.endswith(".py"): 
        # print(os.path.join(directory, filename))
        continue
    else:
        continue

Python 3.6 версия вышеупомянутого ответа, используя os - если у вас есть путь к каталогу в качестве объекта str в переменная, называемая directory_in_str:

directory = os.fsencode(directory_in_str)

for file in os.listdir(directory):
    filename = os.fsdecode(file)
    if filename.endswith(".asm") or filename.endswith(".py"): 
        # print(os.path.join(directory, filename))
        continue
    else:
        continue

Или рекурсивно, используя pathlib :

from pathlib import Path

pathlist = Path(directory_in_str).glob('**/*.asm')
for path in pathlist:
    # because path is object not string
    path_in_str = str(path)
    # print(path_in_str)
424
ответ дан z0r 16 August 2018 в 05:40
поделиться
  • 1
    Кажется, это просто список каталогов или файлов сразу по каталогу. Ответ от pedromateo ниже, похоже, делает рекурсивный список. – Jay Sheth 31 March 2016 в 17:14
  • 2
    Хороший ответ! Я могу добавить, что вам нужно импортировать Python & quot; os & quot; модуль с: - import os – Gabrer 23 February 2017 в 00:52
  • 3
    Обратите внимание, что в каталоге Python 3.6 ожидается, что он будет в байтах, а затем listdir вытолкнет список имен файлов также в виде данных байтов, чтобы вы не могли запускать endswith прямо на нем. Этот код должен быть изменен на directory = os.fsencode(directory_in_str) for file in os.listdir(directory): filename = os.fsdecode(file) if filename.endswith(".asm") or filename.endswith(".py"): # print(os.path.join(directory, filename)) continue else: continue – Kim Stacks 20 May 2017 в 04:52
  • 4
    print(os.path.join(directory, filename)) необходимо изменить на print(os.path.join(directory_in_str, filename)), чтобы заставить его работать в python 3.6 – Hugo Koopmans 3 June 2017 в 21:17
  • 5
    Если вы видите это в 2017 году или позже, os.scandir (dir_str) теперь доступен и гораздо чище использовать. Нет необходимости в fsencode. for entry in os.scandir(path): print(entry.path) – g.o.a.t. 21 December 2017 в 01:49

Вы можете попробовать использовать модуль glob

import glob

for filename in glob.iglob('/foobar/*.asm'):
     print('/foobar/%s' % filename)
82
ответ дан cbare 16 August 2018 в 05:40
поделиться

Вот как я перебираю файлы в Python:

import os

path = 'the/name/of/your/path'

folder = os.fsencode(path)

filenames = []

for file in os.listdir(folder):
    filename = os.fsdecode(file)
    if filename.endswith( ('.jpeg', '.png', '.gif') ): # whatever file types you're using...
        filenames.append(filename)

filenames.sort() # now you have the filenames and can do something with them

НЕТ ЭТИ ТЕХНИКИ ГАРАНТИЯ ЛЮБЫХ ЗАКАЗА ИТЕРАЦИИ

Yup, супер непредсказуемо. Обратите внимание, что я сортирую имена файлов, что важно, если порядок файлов имеет значение, т. Е. Для видеокадров или сбора данных, зависящих от времени. Обязательно поместите индексы в свои имена, хотя!

0
ответ дан Daniel McGrath 16 August 2018 в 05:40
поделиться

Python 3.4 и более поздние версии предлагают pathlib в стандартной библиотеке. Вы можете сделать:

from pathlib import Path

asm_pths = [pth for pth in Path.cwd().iterdir()
            if pth.suffix == '.asm']

Или, если вам не нравятся перечни списков:

asm_paths = []
for pth in Path.cwd().iterdir():
    if pth.suffix == '.asm':
        asm_pths.append(pth)

Path объекты могут быть легко преобразованы в строки.

74
ответ дан Flimm 16 August 2018 в 05:40
поделиться

Я еще не совсем доволен этой реализацией, я хотел иметь собственный конструктор, который делает DirectoryIndex._make(next(os.walk(input_path))) таким образом, что вы можете просто передать путь, в который вы хотите указать список файлов. Edits welcome!

import collections
import os

DirectoryIndex = collections.namedtuple('DirectoryIndex', ['root', 'dirs', 'files'])

for file_name in DirectoryIndex(*next(os.walk('.'))).files:
    file_path = os.path.join(path, file_name)
2
ответ дан ThorSummoner 16 August 2018 в 05:40
поделиться
76
ответ дан Flimm 6 September 2018 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: