Другой способ опробовать. Кроме того, 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
** Два метода получения имени столбца с использованием номера столбца **
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
Исходный ответ:
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)
Вы можете попробовать использовать модуль glob
import glob
for filename in glob.iglob('/foobar/*.asm'):
print('/foobar/%s' % filename)
Вот как я перебираю файлы в 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, супер непредсказуемо. Обратите внимание, что я сортирую имена файлов, что важно, если порядок файлов имеет значение, т. Е. Для видеокадров или сбора данных, зависящих от времени. Обязательно поместите индексы в свои имена, хотя!
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
объекты могут быть легко преобразованы в строки.
Я еще не совсем доволен этой реализацией, я хотел иметь собственный конструктор, который делает 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)
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:52print(os.path.join(directory, filename))
необходимо изменить наprint(os.path.join(directory_in_str, filename))
, чтобы заставить его работать в python 3.6 – Hugo Koopmans 3 June 2017 в 21:17for entry in os.scandir(path): print(entry.path)
– g.o.a.t. 21 December 2017 в 01:49