Why does ls add trailing space preventing output use as filename string?
이전 댓글 표시
Please consider the following error and resolution. What should I be doing differently? (Summary: ls is adding a trailing space to the end of the filepath and I don't know why.)
Erroneous code:
DICOMdatafolder = '/home/sony/Documents/research/data/DICOMfiles/5';
foldername = FindRTPlanDICOMFile(DICOMdatafolder);
planinfo = dicominfo(ls(fullfile(DICOMdatafolder,foldername,'*dcm')))
Error using dicom_getFileDetails (line 14)
File "/home/sony/Documents/research/data/DICOMfiles/5/DOE^JOHN_[longname]/2[longname].dcm
" not found.
Error in dicominfo (line 55)
fileDetails = dicom_getFileDetails(filename);
Error in BlurPortalDose (line 31)
planinfo = dicominfo(ls(fullfile(DICOMdatafolder,foldername,'*dcm')))
Error workaround:
DICOMdatafolder = '/home/sony/Documents/research/data/DICOMfiles/5';
foldername = FindRTPlanDICOMFile(DICOMdatafolder);
filename = ls(fullfile(DICOMdatafolder,foldername,'*dcm')); filename(end)=[];
planinfo = dicominfo(filename)
planinfo =
struct with fields:
Filename: '[too long; I hope MIM will read this and fix their filename length]'
FileModDate: '30-Jan-2018 18:41:34'
FileSize: 39586
Format: 'DICOM'
[...]
채택된 답변
추가 답변 (1개)
Walter Roberson
2018년 1월 31일
1 개 추천
ls is not adding a trailing space. ls is adding a trailing linefeed.
On Mac and Linux, ls() calls the system ls executable, which outputs a multicolumn text stream with embedded newlines. You should avoid using ls to get file names. You cannot just split the result of ls at whitespace because filenames can contain whitespace.
If you need a filename for processing you should be using dir()
카테고리
도움말 센터 및 File Exchange에서 File Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!