python - 迭代和修改目录中的文件

标签 python directory edi contextmanager

我已经有了可以修改与我的程序位于同一目录中的一个 .edi 文件 (testedifact.edi) 的代码。 但是我需要针对包含许多这些 .edi 文件的文件夹运行我的脚本,因此我基本上想使用我的代码应用于每个文件

这是我在一个文件上运行的内容:

segmentsNew = []
global segments     
with open( "testedifact.edi" , "r+") as edifactile:
    segments = edifactile.readlines()
    versionNumber = getVersionNumber(segments)
    for segment in segments:
        #do stuffs
edifactile.close()
with open ("testedifact.edi" , "w") as edifactfile:
    edifactile.writelines(segmentsNew)
edifactfile.close()

但我希望能够对此目录之外以及我们的网络驱动器上的文件执行此操作。

我尝试迭代目录中的文件(作为一个小测试)并将每个文件传递给“with open..”,如下所示

directory = os.listdir(r'C:\Users\name\test_edi_dir')
for file in directory:
    print("printing file names:", file)
    with  open(file, 'r') as edifactfile:
        pass

print(edifactfile.closed)

尽管它打印了文件名,但我不断收到 FileNotFoundError: [Errno 2] No such file or directory: 'testedifact - Kopie (10).edi' ..我做错了什么?

有人可以帮忙吗?

最佳答案

file 仅包含文件名,而不包含其存储的路径。您也需要传递它。

path = r'C:\Users\name\test_edi_dir/'
directory = os.listdir(path)

for file in directory:
    print("printing file names:", file)
    with open(path+file, 'r') as edifactile:
        pass

关于python - 迭代和修改目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748308/

相关文章:

python - 使用多处理和 h5py

Python:检查数据文件是否相对于源代码文件存在

python - OpenCV 'SIFT' 属性错误

python - 如何检测 django 应用程序中的死锁(并消除它们)

windows - 删除除一个以外的所有文件夹

java - Java 中的电子数据交换处理

java - 如何获取除一个目录之外的所有目录的列表?

windows - Windows中奇怪的文件夹创建

EDI X12 版本 4010 消息 - 非复合元素可以包含子元素分隔符吗?

c# - 如何用另一个字符串拆分字符串