【问题标题】:NotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\Users\\username\\MYD06_L2.A2008001.0000.006.2013341193524.hdf'NotADirectoryError: [WinError 267] 目录名无效:'C:\\Users\\username\\MYD06_L2.A2008001.0000.006.2013341193524.hdf'
【发布时间】:2019-01-20 18:32:38
【问题描述】:

我正在使用Windows 10 并在Jupyter NotebookChrome)中运行代码。

这是我的代码:

if __name__ == '__main__':
    import itertools
    MOD03_path = r"C:\Users\saviosebastian\MYD03.A2008001.0000.006.2012066122450.hdf"
    MOD06_path = r"C:\Users\saviosebastian\MYD06_L2.A2008001.0000.006.2013341193524.hdf"   
    satellite = 'Aqua'

    yr = [2008]
    mn = [1]  #np.arange(1,13) 
    dy = [1] 

    # latitude and longtitude boundaries of level-3 grid
    lat_bnd = np.arange(-90,91,1)
    lon_bnd = np.arange(-180,180,1)
    nlat = 180
    nlon = 360

    TOT_pix      = np.zeros(nlat*nlon)
    CLD_pix      = np.zeros(nlat*nlon)

    ### To use Spark in Python
    spark = SparkSession\
        .builder\
        .appName("Aggregation")\
        .getOrCreate()
    filenames0=['']*500
    i=0
    for y,m,d in  itertools.product(yr,mn,dy):
        #-------------find the MODIS prodcts--------------#
        date = datetime.datetime(y,m,d)
        JD01, JD02 = gcal2jd(y,1,1)
        JD1, JD2 = gcal2jd(y,m,d)
        JD = np.int((JD2+JD1)-(JD01+JD02) + 1)
        granule_time = datetime.datetime(y,m,d,0,0)
        while granule_time <= datetime.datetime(y,m,d,23,55):  # 23,55
            print('granule time:',granule_time)
            **[MOD03_fp = 'MYD03.A{:04d}{:03d}.{:02d}{:02d}.006.?????????????.hdf'.format(y,JD,granule_time.hour,granule_time.minute)][1]**
            MOD06_fp = 'MYD06_L2.A{:04d}{:03d}.{:02d}{:02d}.006.?????????????.hdf'.format(y,JD,granule_time.hour,granule_time.minute)
            MOD03_fn, MOD06_fn =[],[]
            for MOD06_flist in  os.listdir(MOD06_path):
                if fnmatch.fnmatch(MOD06_flist, MOD06_fp):
                    MOD06_fn = MOD06_flist
            for MOD03_flist in  os.listdir(MOD03_path):
                if fnmatch.fnmatch(MOD03_flist, MOD03_fp):
                    MOD03_fn = MOD03_flist
            if MOD03_fn and MOD06_fn: # if both MOD06 and MOD03 products are in the directory           

我收到以下错误:

你知道解决这个问题的方法吗?

【问题讨论】:

  • 您正在对包含文件路径的字符串调用os.listdir()。那真的应该是一个包含目录名称的字符串吗?
  • C:\Users\saviosebastian\MYD06_L2.A2008001.0000.006.2013341193524.hdf 根据您的错误无效。
  • pastebin.com/XtDVsPzT -- 这是代码
  • 那么我应该只提供目录(在本例中为“C:/Users/saviosebastian/”)而不是包含文件名的整个路径吗?这是关于 os.listdir()

标签: python apache-spark jupyter-notebook jupyter pyhdf


【解决方案1】:

如果不了解您计算机上的目录系统,我无法给您具体的答案,但现在很明显,您所引用的目录名称有问题。使用文件资源管理器确保该目录确实存在,并确保您没有拼错文件名,这很容易在给定文件名的情况下发生。

【讨论】:

  • 您犯了与 OP 相同的错误:将文件名与目录名混淆。文件和目录是根本不同的东西。 os.listdir 作用于目录,而不是文件。
  • 我知道,很抱歉没有区分。目录错误则意味着目录路径有问题,而不是文件名有问题。感谢您的更正,尽管确保文件名的拼写正确不会有什么坏处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 2020-08-05
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
相关资源
最近更新 更多