Go에 파일이 있는지 확인하는 방법은 무엇인가요?
Go의 표준 라이브러리에는 파이썬의 os.path.exists
처럼 파일의 존재 여부를 확인하는 데만 사용되는 함수가 없습니다. 이를 수행하는 관용적 방법은 무엇인가요?
390
8
Go의 표준 라이브러리에는 파이썬의 os.path.exists
처럼 파일의 존재 여부를 확인하는 데만 사용되는 함수가 없습니다. 이를 수행하는 관용적 방법은 무엇인가요?
파일이 존재하지 않는지 확인하려면 파이썬의
if not os.path.exists(filename)
와 동일합니다:파일이 존재하는지 확인하려면 파이썬의
if os.path.exists(filename)
와 동일합니다:편집됨: 최근 댓글에 따라
>. [.] # 39 의 it& 실제로 필요한 것은 매우 자주 [.] '는' 오스릭스테 사용하여 경우를 쉽게 할 수 있는 것이 필요합니다.
>. [.] 예를 들면 다음과 같습니다. # 39 의 파일을 열고 예정이면 there& 첫 여부를 확인할 수 있을 이유가 없다. 어쨌든 간에, 파일 안에 사라질 수 검사 및 개설, # 39 오스트로펜 상관 없이 '오류' ll you& 확인해야 한다. 그래서 호출하십시오 (방황케) '' 오스지아노테시스트 시도하시겠습니까 후에는 됩니다 해당 파일을 열 수 있어, 및 거래 색상에는 비존재 (필요한 경우 특수 처리).
>. [.] # 39 don& 경로에 대한 기존 전혀 확인할 필요가 있습니다, t (진실이며당신이 shouldn& # 39, t).
>. - '여부를 패스이므로 오s. 케디라공' 는 이미 존재합니다. (또한 호출하십시오 오류 것을 확인해야 한다.)
>. 사용하는 대신 ',' - '로스 스크리트 콩지름에 오스트로펜필레 (경로, os. O_RDWR os.O_CREATE os.O_EXCL, 0666) '. # 39, ll 이쪽요 you& 오류가 발생할 경우 해당 파일이 이미 있습니다. 또한, 이 doesn& # 39 와 달리 무언가 할 수 있도록 파일 경합이 없는 버전이 존재를 확인하는 신청했다.
출처: msg/golang-nuts/ayx-bmndmfo/4rl8ffhr8v4j https://groups.google.com/forum/ #!
[1]: msg/golang-nuts/ayx-bmndmfo/4rl8ffhr8v4j https://groups.google.com/forum/ #!
다음 예제에서와 같이
os.Stat()
및os.IsNotExist()
함수를 사용해야 합니다:이 예제는 여기에서 발췌한 것입니다.
user11617]1의 예는 잘못된 것으로, 파일이 존재하지 않지만 다른 종류의 오류가 있는 경우에도 파일이 존재한다고 보고합니다.
서명은 Exists(문자열)(부울, 오류)여야 합니다. 그리고 호출 사이트도 더 나을 것이 없습니다.
그가 작성한 코드는 다음과 같이 더 좋을 것입니다:
하지만 저는 대신 이렇게 제안합니다:
함수 예제:
39 의 몇 가지 기능을 모두 제공하는 애스펙트에서 let& 보면 첫째, "os" 패키지 "고랭" 가 무슨 뜻이냐고 않습니다를 유틸리티와의 하지만 오류 검사 프로그램, 즉, 단 한 번의 래퍼 오류를 처리할 수 있는 크로스 플랫폼.
그래서 기본적으로, 만약 "오스릭스테" 만약 이 함수가 doesn& # 39, 즉, 모든 파일은 오류 안 줘 기존 않니다 경우 어떤 종류의 오류가 확인해야 합니다 (here comes the 사용하는 것은, 이 두 함수 "오스지아노테시스트" 와 "오스트리스시스트."
이 파일의 오류 때문에 "상태" 로 이해할 수 있도록 하고 있는지, 아니면 doesn& t # 39 는 몇 가지 문제가 존재하지 않고 던지기 때문에 오류가 있습니다.
이 형식은 "오류" 있을 수 있지만, 이러한 기능을 시행하십시오 매개변수입니다 벗어날 수 있지만, "모두" # 39 이 wouldn& 쉽게 이해할 수 없다.
또한 이 사실을 가리키는 "이즈시스트 같은 아노테시스트 아니다!", 이들은 서로 다른 두 가지 방법을 전지전능하심이라
이제 궁금해할까봐 선호하는 가, 내가 가장 좋은 방법은 해당 파일이 존재할 수 있다.
그러나 실제로 어떤 경로를 다른 답을 도래하도록하려하는 누락했습니다 함수은 디렉토리여야. 물론, 같은 기능을 할 수 있는 경로는 매우 절실해졌습니다.
"' 부울 피레렉시츠 func (파일_이름 문자열) { 정보, 방황케: = os. Stat (파일_이름) 만약 os. 아노테시스트 (방황케) { 거짓값 반품하십시오. } 린포스시디르 복귀하십시오! () }
"'
또 지적하는: 이 코드는 계속 이어질 수 있는 다른 경쟁 상태 또는 프로세스 또는 지정된 파일을 만들 수 있고, 피레렉시츠 스레드할 deletes 함수은 실행되고 있습니다.
39 이 경우, re in your 스래드입니다 잠급니다 you& 걱정이 사용할 경우, 이 함수 또는 여러 개의 응용 프로그램이 사용하는 프로세스 간 세마포가 직렬화할 액세스하려면 있었다. 외부에 있는 경우 관련된 다른 응용 프로그램이 you& 컨트롤이거나, # 39, re 아웃해야 운빨이야, 그런 것 같아요.