niruipeng 发表于 2020-6-4 21:38:29

求助啊 大哥们

今天做小甲鱼的题   只改变了a = ('.txt')和a=['.txt'],输出结果为啥差这么多   第二个是我想要的不知道什么原因求大神们解答(只改变了红字部分)
1、
import os


def sosuo(start):
    os.chdir(start)
    a = ('.txt')

    for each_path in os.listdir(os.curdir):
      if os.path.splitext(each_path) in a:
                b.append(os.getcwd()+os.sep+each_path+'\n')
      if os.path.isdir(each_path):
            sosuo(each_path)
            os.chdir(os.pardir)
    return b

def chuanjian(start,b):
    a = open(start+'\\a.txt','wt')
    a.writelines(b)
    a.close
start = input('请输入待查找的初始目录:')
b = []
c = sosuo(start)
chuanjian(start,c)



输出结果为:
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\3
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\3\1
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\3\1\1.txt
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\4
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\4\1.txt
C:\Users\nirui\Desktop\python��ϰ\20200601\2\2
C:\Users\nirui\Desktop\python��ϰ\20200601\2\2\5
C:\Users\nirui\Desktop\python��ϰ\20200601\2\2\6
C:\Users\nirui\Desktop\python��ϰ\20200601\2\2\6\7
C:\Users\nirui\Desktop\python��ϰ\20200601\2\2\6\7\1.txt
C:\Users\nirui\Desktop\python��ϰ\20200601\2\a.txt


2、
import os
def sosuo(start):
    os.chdir(start)
    a = ['.txt']
    for each_path in os.listdir(os.curdir):
      if os.path.splitext(each_path) in a:
                b.append(os.getcwd()+os.sep+each_path+'\n')
      if os.path.isdir(each_path):
            sosuo(each_path)
            os.chdir(os.pardir)
    return b
def chuanjian(start,b):
    a = open(start+'\\a.txt','wt')
    a.writelines(b)
    a.close
start = input('请输入待查找的初始目录:')
b = []
c = sosuo(start)
chuanjian(start,c)




输出结果为:
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\3\1\1.txt
C:\Users\nirui\Desktop\python��ϰ\20200601\2\1\4\1.txt
C:\Users\nirui\Desktop\python��ϰ\20200601\2\2\6\7\1.txt
C:\Users\nirui\Desktop\python��ϰ\20200601\2\a.txt


Twilight6 发表于 2020-6-4 22:00:11

发现新大陆了...

niruipeng 发表于 2020-6-4 22:03:37

Twilight6 发表于 2020-6-4 22:00
发现新大陆了...

我找了半天   才发现是括号的原因但是不知道为社么{:10_257:}

Twilight6 发表于 2020-6-4 22:07:53

niruipeng 发表于 2020-6-4 22:03
我找了半天   才发现是括号的原因但是不知道为社么

我知道为什么了 ... 我因为你加上括号等于没加
如图:

冬雪雪冬 发表于 2020-6-4 22:18:14

第一个a是字符串,if os.path.splitext(each_path) in a: 则".", "t", "x"都是为真的
第二个是列表,if os.path.splitext(each_path) in a: 则“.txt"为真

冬雪雪冬 发表于 2020-6-4 22:20:13

如果把第一个写出元组,则是a = ('.txt',),此时结果就与第二个例子一致了

niruipeng 发表于 2020-6-4 22:21:24

本帖最后由 niruipeng 于 2020-6-4 22:23 编辑

Twilight6 发表于 2020-6-4 22:07
我知道为什么了 ... 我因为你加上括号等于没加
如图:

哦原来是这个原理

niruipeng 发表于 2020-6-4 22:26:33

冬雪雪冬 发表于 2020-6-4 22:20
如果把第一个写出元组,则是a = ('.txt',),此时结果就与第二个例子一致了

懂了   谢谢
页: [1]
查看完整版本: 求助啊 大哥们