对多个Python文件运行相同的代码
对多个Python文件运行相同的代码,python,python-3.x,file,Python,Python 3.x,File,正如您所见,我已经编写了一段代码(我知道它本可以写得更好)。所以我的问题是,如何为文件夹中的多个文件运行此代码?。我可以使用“for loop”来完成此操作吗?我的文件位于名为task1的文件夹中,老实说,我想不出执行此操作的方法。谢谢你花时间阅读 bands = list() filename = "file1000" with open (filename) as fin: for line in fin: bands.append(line.s
正如您所见,我已经编写了一段代码(我知道它本可以写得更好)。所以我的问题是,如何为文件夹中的多个文件运行此代码?。我可以使用“for loop”来完成此操作吗?
我的文件位于名为task1的文件夹中,老实说,我想不出执行此操作的方法。谢谢你花时间阅读
bands = list()
filename = "file1000"
with open (filename) as fin:
for line in fin:
bands.append(line.strip())
def partition(bands, start, end):
pivot = bands[start]
low = start + 1
high = end
while True:
while low <= high and bands[high] >= pivot:
high = high - 1
while low <= high and bands[low] <= pivot:
low = low + 1
if low <= high:
bands[low], bands[high] = bands[high], bands[low]
else:
break
bands[start], bands[high] = bands[high], bands[start]
return high
def quick_sort(array, start, end):
if start >= end:
return
p = partition(array, start, end)
quick_sort(array, start, p-1)
quick_sort(array, p+1, end)
def heapify(bands, n, i):
largest = i
l = 2 * i + 1
r = 2 * i + 2
if l < n and bands[i] < bands[l]:
largest = l
if r < n and bands[largest] < bands[r]:
largest = r
if largest != i:
bands[i], bands[largest] = bands[largest], bands[i]
heapify(bands, n, largest)
def heapSort(bands):
n = len(bands)
for i in range(n, -1, -1):
heapify(bands, n, i)
for i in range(n - 1, 0, -1):
bands[i], bands[0] = bands[0], bands[i]
heapify(bands, i, 0)
def mergeSort(bands):
if len(bands) > 1:
mid = len(bands) // 2
L = bands[:mid]
R = bands[mid:]
mergeSort(L)
mergeSort(R)
i = j = k = 0
while i < len(L) and j < len(R):
if L[i] < R[j]:
bands[k] = L[i]
i += 1
else:
bands[k] = R[j]
j += 1
k += 1
while i < len(L):
bands[k] = L[i]
i += 1
k += 1
while j < len(R):
bands[k] = R[j]
j += 1
k += 1
def insertionSort(bands):
for i in range(1, len(bands)):
key = bands[i]
j = i - 1
while j >= 0 and key < bands[j]:
bands[j + 1] = bands[j]
j -= 1
bands[j + 1] = key
import time
start_time = time.time()
quick_sort(bands, 0, len(bands) - 1)
file = open("time.txt","a")
file.write(str(time.time() - start_time))
file.write(" ")
file.close()
start_time = time.time()
heapSort(bands)
file = open("time.txt","a")
file.write(str(time.time() - start_time))
file.write(" ")
file.close()
start_time = time.time()
mergeSort(bands)
file = open("time.txt","a")
file.write(str(time.time() - start_time))
file.write(" ")
file.close()
start_time = time.time()
insertionSort(bands)
file = open("time.txt","a")
file.write(str(time.time() - start_time))
file.write(" ")
file.close()
bands=list()
filename=“file1000”
打开(文件名)作为fin:
对于fin中的行:
bands.append(line.strip())
def分区(带、开始、结束):
枢轴=带[开始]
低=启动+1
高端=高端
尽管如此:
低=枢轴时:
高=高-1
当低=0且键<波段[j]时:
频带[j+1]=频带[j]
j-=1
波段[j+1]=键
导入时间
开始时间=time.time()
快速排序(条带、0、len(条带)-1)
文件=打开(“time.txt”、“a”)
file.write(str(time.time()-start_time))
file.write(“”)
file.close()文件
开始时间=time.time()
堆(带)
文件=打开(“time.txt”、“a”)
file.write(str(time.time()-start_time))
file.write(“”)
file.close()文件
开始时间=time.time()
合并排序(带)
文件=打开(“time.txt”、“a”)
file.write(str(time.time()-start_time))
file.write(“”)
file.close()文件
开始时间=time.time()
插入排序(条带)
文件=打开(“time.txt”、“a”)
file.write(str(time.time()-start_time))
file.write(“”)
file.close()文件
您可以使用:
d="**Provide the directory here**"
files=os.listdir(d)
file=[i[:-4] for i in files] #To store the csv file name as DataFrame name without the '.csv' part
a=[]
for i in range(len(files)):
exec("%s=pd.read_csv(d+files[i])"%file[i])
a.append(file[i])
现在,您可以在“a”中查看数据帧列表。您可以对每个文件夹进行迭代并将其传递给您的函数。您可以使用
os.listdir(folder)
获取文件夹中的所有名称(将是文件和子文件夹的名称),然后您可以使用for
-loop以每个文件名运行代码listdir()
只提供文件名,您需要os.path.join()
来创建文件的完整路径。您还可以使用if
筛选名称
import os
folder = "/path/to/assignment"
for name in os.listdir(folder):
if name.startswith("file"): # use it if you have to filter files by name
filename = os.path.join(folder, name)
print(filename)
# ... your code ...
最终,您可以使用glob
进行此操作。如果您想筛选名称,那么它可能很有用。对于所有名称,请使用*
。对于文件管理器,您可以使用ie*.txt
或文件*
等
import glob
#for filename in glob.glob("/path/to/assignment/file*.txt"):
for filename in glob.glob("/path/to/assignment/*"):
print(filename)
# ... your code ...
如果您还需要进入子文件夹,则可以使用os.walk(文件夹)
对于os.listdir(“/path/to/assignment”):filename=os.path.join(“/path/to/assignment”,name)
始终将所有import
放在脚本开头,每个人都知道运行此代码需要哪些模块。您还可以将所有函数放在其他代码之前-这意味着在第行bands=list()
之前,如果有评论回答了您的问题,请要求评论人将其放在正确的答案中,以便对其进行投票,可能会对其进行编辑以获取详细信息并予以接受。(但不要在标题中添加[已解决]。这是有指标的。)
import os
folder = "/path/to/assignment"
for root, dirs, files in os.walk(folder):
for name in files:
if name.startswith("file"): # use it if you have to filter files by name
filename = os.path.join(root, name)
print(filename)
# ... your code ...