strip_dir使用方法
时间: 2023-09-20 10:11:18 浏览: 52
strip_dir是一个Python函数,用于从文件路径中删除目录路径,只保留文件名。它的使用方法如下:
```python
import os
def strip_dir(path):
return os.path.basename(path)
```
strip_dir函数接受一个文件路径作为参数,使用os.path.basename函数从路径中提取文件名,并返回该文件名。
例如,如果我们有一个文件路径"/home/user/documents/file.txt",我们可以使用strip_dir函数来提取文件名"file.txt":
```python
path = "/home/user/documents/file.txt"
filename = strip_dir(path)
print(filename) # 输出: file.txt
```
注意,strip_dir函数仅适用于提取文件名,不适用于提取文件扩展名。如果您需要提取文件扩展名,请考虑使用os.path.splitext函数。
相关问题
如果其中有的文件时CSV文件格式,有的是二进制格式,有的是TXT格式,有的是.py格式,请你完善以下代码,以便能够打印文件的第一行 import os # 一级文件夹路径 root_dir = '/path/to/root/directory' # 遍历一级文件夹下的所有二级文件夹 for subdir in os.listdir(root_dir): # 拼接二级文件夹路径 sub_dir_path = os.path.join(root_dir, subdir) # 判断是否为文件夹 if os.path.isdir(sub_dir_path): # 遍历二级文件夹下的所有文件 for filename in os.listdir(sub_dir_path): # 拼接文件路径 file_path = os.path.join(sub_dir_path, filename) # 判断是否为文件 if os.path.isfile(file_path): # 打印文件路径和表头 with open(file_path, 'r') as f: print('File Path:', file_path) print('Header:', f.readline().strip())
import os
root_dir = '/path/to/root/directory'
for subdir in os.listdir(root_dir):
sub_dir_path = os.path.join(root_dir, subdir)
if os.path.isdir(sub_dir_path):
for filename in os.listdir(sub_dir_path):
file_path = os.path.join(sub_dir_path, filename)
if os.path.isfile(file_path):
with open(file_path, 'rb') as f:
print('File Path:', file_path)
if filename.endswith('.csv'): # 如果是csv文件
print('Header:', f.readline().decode('utf-8').strip()) # 读取并解码第一行
elif filename.endswith('.txt'): # 如果是txt文件
print('Header:', f.readline().strip()) # 读取第一行
elif filename.endswith('.py'): # 如果是py文件
print('Header:', f.readline().strip()) # 读取第一行
elif filename.endswith('.bin'): # 如果是二进制文件
header = f.read(10) # 读取前10个字节作为表头
print('Header:', header)
train_dir = "weibo21/data/train.txt" vocab_dir = "weibo21/data/vocab.pkl" pretrain_dir = "weibo21/data/sgns.sogou.char" emb_dim = 300 filename_trimmed_dir = "weibo21/data/embedding_SougouNews" if os.path.exists(vocab_dir): word_to_id = pkl.load(open(vocab_dir, 'rb')) else: # tokenizer = lambda x: x.split(' ') # 以词为单位构建词表(数据集中词之间以空格隔开) tokenizer = lambda x: [y for y in x] # 以字为单位构建词表 word_to_id = build_vocab(train_dir, tokenizer=tokenizer, max_size=MAX_VOCAB_SIZE, min_freq=1) pkl.dump(word_to_id, open(vocab_dir, 'wb')) embeddings = np.random.rand(len(word_to_id), emb_dim) f = open(pretrain_dir, "r", encoding='UTF-8') for i, line in enumerate(f.readlines()): # if i == 0: # 若第一行是标题,则跳过 # continue lin = line.strip().split(" ") if lin[0] in word_to_id: idx = word_to_id[lin[0]] emb = [float(x) for x in lin[1:301]] embeddings[idx] = np.asarray(emb, dtype='float32') f.close() np.savez_compressed(filename_trimmed_dir, embeddings=embeddings)
这段代码的作用是:
- 定义了一些变量,例如 `train_dir` 存储训练数据的文件路径,`vocab_dir` 存储词表的路径,`pretrain_dir` 存储预训练词向量的路径,`emb_dim` 存储词向量的维度,`filename_trimmed_dir` 存储截断后词向量的路径。
- 判断词表文件是否存在,若存在则从文件中读取词表,否则根据训练数据构建词表并将其保存到文件中。
- 初始化一个随机的词向量矩阵 `embeddings`,其行数为词表的大小,列数为指定的词向量维度。
- 读取预训练词向量文件并将其加载到 `embeddings` 矩阵中,若预训练词向量中有某个词汇在词表中不存在,则该词汇的词向量使用随机值进行初始化。
- 将截断后的词向量矩阵保存到文件中。