为什么显示没有那个文件或目录

为什么显示没有那个文件或目录,求佬指点迷津!。帮兄弟度过难关

请详细说明问题背景。

你的报错贴出来

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7512997
  • 这篇博客也不错, 你可以看下查看并在目录内创建文件,需要什么权限?在目录内显示文件,需要什么权限?拷贝文件需要什么权限?
  • 除此之外, 这篇博客: 【自签名证书】如何解决访问蓝鲸平台时,提示网站不安全问题?中的 为什么要替换蓝鲸自带证书? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 因为蓝鲸平台自带的证书也是个自签名证书,但是却是个“有问题”的证书。为什么说它是有问题的呢?首先打开蓝鲸paas首页时大家应该都会出现以下页面:

     

     

    因为用的是自签名证书浏览器会提示这个链接不安全,这时候如果用的是windows系统的浏览器会有个“继续前往xxx”的选项来忽略这个警告继续访问,但如果是linux系统的浏览器就没那么好说话了,会显示以下界面(ubuntu系统的chrome浏览器):

     

    31451e85a34b4e1a9b9fc89b0d0a44c1.pnguploading.4e448015.gif转存失败重新上传取消

     

    没有“继续前往xxx”的选项,原因还是因为这个证书是“有问题”的,而windows可以选择对这个“残废”的证书睁一只眼闭一只眼但linux下更为严格的验证机制不允许这种情况发生。

    说到这其实大家肯定觉得这不是什么大问题,毕竟linux系统比较小众,除了笔者这种觉得敲命令行比windows方便的开发者基本没几个人会去用。

    但问题是——我们写的代码99%的情况下是跑在linux系统的服务器上的!而这个证书的问题除了浏览器没有“继续前往xxx”的选项外带来的后果还有在使用linux的curl命令时会出现如下图所示的报错:

    就算你百度了centos、ubuntu如何信任证书并将这个证书加入到系统的受信任证书根目录依然还会有这个错误。

    有些同学可能会说我们可以给curl命令加上“-k”选项来忽略证书验证问题,但这样做只是一种掩耳盗铃的方式,实际上是把https当http用了,那我们用https就没意义了起不到防护中间人攻击的目的。

    自签名证书被浏览器提示不安全并不是说它真的起不到安全的作用,而是浏览器不认识这个证书,但实际上当我们知道这个证书是安全的并信任它时它就是安全的,而加“-k”和“继续访问xxx”实际上是不管什么证书都认为是安全的,就跟没证书一样。

    到了这里大家可能还是觉得问题不大,因为除了测试接口我们好像也不需要用到curl啊。但我要告诉你除了curl其它编程语言里的http相关的包里的发送请求部分其实都是有这个问题的,比如python语言的requests包,当你试图运行以下代码时会出现报错(别提verify=False了,那个和curl -k是一样的)。

    还有在3.5.x版本的CMDB里设置事件推送时如果设置的url是paas平台上部署的接口将会无法推送,因为配置平台的代码里并没有忽略证书的验证,就会产生这个问题。好了,说了一大圈我好像还是没有解释为什么说这个证书是“有问题”的。

    点开上图画圈的地方找到这个页面:

    再找个知名的网站看看相同的页面:

    会发现下面的证书的路径多了几层证书,这就叫证书链。还记得我们上篇说的证书需要由CA颁发的事吗,这个页面就是显示这个证书是从哪来的。

    因为根CA一般是不会直接颁发证书的,而是给二级CA颁发证书,二级CA又给三级CA颁发证书……就像我们办身份证不会直接去北京的公安部办而是去辖区派出所办一样,这样子的层级关系就形成了一个链条就叫证书链。

    观察蓝鲸的证书我们可以发现它只有一级,上面没有其它层级了。当然并不是说只有一级就不行,如果这个证书是CA的话就算只有一级它的证书链也是完整的,可以被linux系统验证。问题就出在这个证书恰恰不是CA。怎么知道的呢?我们来看另一个自签名证书:

    也是只有一级,但详细信息里还有这一行:

    基本约束的“Subject Type=CA”说明这个证书本身就是CA,所以它的证书链是完整的,CA本身可以证明这个证书自己是合法证书。但对于蓝鲸自带的证书来说它就没有这个基本约束,因此这个证书不是CA,但又不是CA颁发的证书,它的证书链就不是完整的,没人能为它作证。这就是它“残废”的原因,也是它在linux平台上即使在代码里信任了或者加到系统的受信任根证书目录里了也不能通过验证的原因。

  • 您还可以看一下 赵勇老师的IT行业项目经理常见面试问题讲解一课程中的 某个软件项目未按期交付,已经严重延期,如何处理?小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    要解决文件或目录不存在的问题,可以按照以下步骤进行操作:

    1. 首先,确定文件或目录的路径是否正确。检查路径是否包含正确的文件名和文件后缀,以及目录是否存在。

    2. 使用os.path模块中的函数判断路径是否为文件或目录,可以使用os.path.isfile(path)函数判断路径是否为文件,使用os.path.isdir(path)函数判断路径是否为目录。根据不同的结果,确认文件或目录是否存在。

    3. 如果路径是一个链接,可以使用os.path.islink(path)函数判断路径是否为链接。

    4. 如果路径是相对路径,可以使用os.path.abspath(path)函数将其转换为绝对路径。

    以下是一个示例代码,根据给定的文件路径,判断文件是否存在:

    import os
    
    def check_file_exist(file_path):
        if os.path.isfile(file_path):
            print("文件存在")
        else:
            print("文件不存在")
    

    你可以使用类似的方式进行目录的判断,示例代码如下:

    import os
    
    def check_directory_exist(directory_path):
        if os.path.isdir(directory_path):
            print("目录存在")
        else:
            print("目录不存在")
    

    这样,你就可以根据具体的路径判断文件或目录是否存在,并得到相应的解决方案。