AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 77046105
Accepted
Pubg Mobile
Pubg Mobile
Asked: 2023-09-06 00:09:57 +0800 CST2023-09-06 00:09:57 +0800 CST 2023-09-06 00:09:57 +0800 CST

按特定排列合并每个文本文件的最后 3 行

  • 772

我的目录中有大量 txt 文件E:\Desktop\Social_media\edit8\New folder,每个文件的排列类似于以下内容:

Bolt
2,739,393
Classmates
1,267,092
SixDegrees
1,077,353
PlanetAll
552,488
theGlobe
437,847
OpenDiary
9,251
1998
MARCH
034+

现在我想合并每个 txt 文件的最后 3 行,如下所示:

Bolt
2,739,393
Classmates
1,267,092
SixDegrees
1,077,353
PlanetAll
552,488
theGlobe
437,847
OpenDiary
9,251
034+ MARCH 1998

这意味着最后 3 行必须有这样的排列number+ month year

我为此编写了以下 python 脚本,但我不知道为什么不起作用:

import os

# Define the directory where your text files are located
directory_path = r'E:\Desktop\Social_media\edit8\New folder'

# Function to rearrange the lines and write to a new file
def rearrange_lines(file_path):
    with open(file_path, 'r') as file:
        lines = [line.strip() for line in file.readlines() if line.strip()]  # Read non-empty lines

    # Check if there are at least 3 non-empty lines
    if len(lines) >= 3:
        lines[-1], lines[-2], lines[-3] = lines[-3], lines[-2], lines[-1]  # Rearrange the last 3 lines

        # Create a new file with the rearranged lines
        with open(file_path, 'w') as file:
            file.write('\n'.join(lines))

# Iterate through each file in the directory
for root, dirs, files in os.walk(directory_path):
    for file_name in files:
        if file_name.endswith('.txt'):
            file_path = os.path.join(root, file_name)
            rearrange_lines(file_path)
            print(f'Rearranged lines in {file_name}')

print('Done!')

我的脚本问题出在哪里?以及如何解决这个问题?

python
  • 2 2 个回答
  • 31 Views

2 个回答

  • Voted
  1. Best Answer
    Barmar
    2023-09-06T00:19:09+08:002023-09-06T00:19:09+08:00

    您没有将结果中的最后 3 行合并为一行。

    # Function to rearrange the lines and write to a new file
    def rearrange_lines(file_path):
        with open(file_path, 'r') as file:
            lines = [line.strip() for line in file.readlines() if line.strip()]  # Read non-empty lines
    
        # Check if there are at least 3 non-empty lines
        if len(lines) >= 3:
            # reverse last 3 lines, join them with space, and replace with this result
            lines[-3:] = [' '.join(lines[-1:-4:-1])]
    
            # Create a new file with the rearranged lines
            with open(file_path, 'w') as file:
                file.write('\n'.join(lines))
    

    分配给lines[-3:]是切片替换。我们用单行列表替换它。

    • 2
  2. Pubg Mobile
    2023-09-06T00:15:31+08:002023-09-06T00:15:31+08:00

    我在评论的帮助下发现了我的脚本的问题:

    import os
    
    # Define the directory where your text files are located
    directory_path = r'E:\Desktop\Social_media\edit8\New folder'
    
    # Function to rearrange and combine the lines and write to a new file
    def rearrange_lines(file_path):
        with open(file_path, 'r') as file:
            lines = [line.strip() for line in file.readlines() if line.strip()]  # Read non-empty lines
    
        # Check if there are at least 3 non-empty lines
        if len(lines) >= 3:
            combined_line = f'{lines[-1]} {lines[-2]} {lines[-3]}'  # Combine the last 3 lines
            lines = lines[:-3]  # Remove the last 3 lines
            lines.append(combined_line)  # Append the combined line
    
            # Create a new file with the rearranged lines
            with open(file_path, 'w') as file:
                file.write('\n'.join(lines))
    
    # Iterate through each file in the directory
    for root, dirs, files in os.walk(directory_path):
        for file_name in files:
            if file_name.endswith('.txt'):
                file_path = os.path.join(root, file_name)
                rearrange_lines(file_path)
                print(f'Rearranged lines in {file_name}')
    
    print('Done!')
    
    • 0

相关问题

  • 如何将 for 循环拆分为 3 个单独的数据框?

  • 如何检查 Pandas DataFrame 中的所有浮点列是否近似相等或接近

  • “load_dataset”如何工作,因为它没有检测示例文件?

  • 为什么 pandas.eval() 字符串比较返回 False

  • Python tkinter/ ttkboostrap dateentry 在只读状态下不起作用

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve