批量提取文件夹下所有子文件夹和文件名称
时间: 2023-12-06 22:02:41 浏览: 43
你可以使用Python的os.walk()函数来批量遍历文件夹下所有子文件夹和文件,并将它们的名称存储在一个列表中。下面是一个示例代码:
``` python
import os
# 定义一个空列表来存储文件夹和文件名称
file_list = []
# 遍历文件夹及其子文件夹
for root, dirs, files in os.walk("your_folder_path"):
# 将文件夹名称添加到列表中
for dir in dirs:
file_list.append(os.path.join(root, dir))
# 将文件名称添加到列表中
for file in files:
file_list.append(os.path.join(root, file))
# 打印列表中所有文件夹和文件的名称
for name in file_list:
print(name)
```
将上述代码中的“your_folder_path”替换为你要提取名称的文件夹路径,运行之后即可获得该文件夹下所有子文件夹和文件的名称。
相关问题
bat批量提取子文件夹文件名
要实现bat批量提取子文件夹中的文件名,你可以按照以下步骤进行操作:
1. 首先,在bat文件中设置一个变量(比如path)来表示待提取文件名的文件夹的路径。
2. 使用for命令遍历path文件夹及其子文件夹中的所有文件和文件夹。命令格式如下:
for /r %path% %%i in (*) do (
rem 这里是你需要执行的操作,可以将文件名输出到一个文本文件中
)
注意,在bat文件中,使用变量需要使用两个百分号(%%i),而直接在命令行中使用变量只需要一个百分号 (%i)。
3. 在for循环中,你可以执行一些操作,比如将文件名输出到一个文本文件中。使用echo命令加上">>"符号将文件名附加到一个文本文件中。例如:
echo %%~nxi >> 文件名.txt
这将把文件名和扩展名附加到文件名.txt的末尾。如果你需要提取的仅仅是文件名,可以使用%%~ni。
4. 执行完bat文件后,你将在目标文件夹中生成一个名为文件名.txt的文本文件,其中包含了所有子文件夹中的文件名。
需要注意的是,在执行bat文件之前,你需要确保设置了正确的文件夹路径(path变量)。另外,如果文件夹路径中含有空格,需要使用引号将路径括起来。
同一文件夹下的csv文件批量提取几列形成新的文件
你可以使用Python中的pandas库来批量处理同一文件夹下的csv文件,提取几列形成新的文件。具体步骤如下:
1. 导入pandas库和os库
```
import pandas as pd
import os
```
2. 设置文件夹路径和要提取的列
假设你要处理的csv文件都在文件夹data中,文件夹路径为'./data/',而你要提取的列为第一列和第三列,可以使用以下代码:
```
folder_path = './data/'
columns_to_extract = ['列名1', '列名3']
```
其中,'列名1'和'列名3'是你要提取的列的名称。
3. 遍历文件夹中的所有csv文件并提取指定列
可以使用os库的listdir函数遍历指定文件夹中的所有文件,再针对每个csv文件提取指定列。具体代码如下:
```
for file_name in os.listdir(folder_path):
if file_name.endswith('.csv'):
file_path = os.path.join(folder_path, file_name)
df = pd.read_csv(file_path)
new_df = df[columns_to_extract]
new_file_name = os.path.splitext(file_name)[0] + '_extracted.csv'
new_file_path = os.path.join(folder_path, new_file_name)
new_df.to_csv(new_file_path, index=False)
```
其中,os.path.splitext(file_name)[0]可以获取文件名(不包括扩展名),再加上'_extracted.csv'作为新文件名。
综上所述,批量提取同一文件夹下的csv文件的指定列形成新的文件的完整代码如下:
```
import pandas as pd
import os
folder_path = './data/'
columns_to_extract = ['列名1', '列名3']
for file_name in os.listdir(folder_path):
if file_name.endswith('.csv'):
file_path = os.path.join(folder_path, file_name)
df = pd.read_csv(file_path)
new_df = df[columns_to_extract]
new_file_name = os.path.splitext(file_name)[0] + '_extracted.csv'
new_file_path = os.path.join(folder_path, new_file_name)
new_df.to_csv(new_file_path, index=False)
```