为什么不 split() 像这样使用转义的 \ 并加入除最终文件名项目之外的所有项目。如果您出于其他目的需要文件名,则使用 split() 并使用索引 -1 来获取该部分。
请注意,我在字符串前面添加了一个 r,因此所有反斜杠都保持不变。你可以阅读这个here。
my_file_location = r"C:\d\projects\project1\folder1\folder2\folder3\folder4\file.h"
print('\\'.join(my_file_location.split('\\')[0:-1])) # path
>> C:\d\projects\project1\folder1\folder2\folder3\folder4
print(my_file_location.split('\\')[-1]) # filename
>> file.h
如果你想遍历这些文件名的列表,那么你可以这样做:
import csv
output_list = []
with open('my_csv_example.csv', 'r') as f:
csv_reader = csv.reader(f)
for row in csv_reader:
output_list.append('\\'.join(row[0].split('\\')[0:-1]))
with open('my_csv_output_example.csv', mode='w') as f2:
csv_writer = csv.writer(f2, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in output_list:
csv_writer.writerow([row])
输入文件(my_csv_example.csv):
C:\d\projects\project1\folder1\folder2\folder5\folder1\file3.h
C:\d\projects\project1\folder1\folder2\folder4\folder2\file5.h
C:\d\projects\project1\folder1\folder2\folder3\folder3\file3.h
C:\d\projects\project1\folder1\folder2\folder2\folder4\file4.h
C:\d\projects\project1\folder1\folder2\folder1\folder5\file2.h
输出文件(my_csv_output_example.csv):
C:\d\projects\project1\folder1\folder2\folder5\folder1
C:\d\projects\project1\folder1\folder2\folder4\folder2
C:\d\projects\project1\folder1\folder2\folder3\folder3
C:\d\projects\project1\folder1\folder2\folder2\folder4
C:\d\projects\project1\folder1\folder2\folder1\folder5
由于评论而更新,我认为您缺少的一点是尝试在列表上运行字符串函数。您可能需要列表中的第一个元素,即 0,所以这是您的关键位:
row[0].split('\\')[0:-1])