Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对多个Python文件运行相同的代码_Python_Python 3.x_File - Fatal编程技术网

对多个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 ...