programing

IPython 변수를 bash 명령에 대한 인수로 전달

sourcejob 2023. 5. 4. 19:54
반응형

IPython 변수를 bash 명령에 대한 인수로 전달

Ipython/Jupyter 노트북에서 bash 명령을 실행하여 python 변수의 값을 인수로 전달하는 방법은 다음과 같습니다.

py_var="foo"
!grep py_var bar.txt

(분명히 나는 그랩을 하고 싶습니다.foo그리고 문자 그대로의 문자열이 아닙니다.py_var)

일반해

캣빌츠가 제안한 바와 같이,{..}:

dir_path = "/home/foo/bar"
!cp file1 {dir_path}

그것의 행동은 보다 더 예측 가능합니다.$..예: 다른 문자열을 연결하려는 경우sub_dir당신의 길로,$기대했던 결과를 주지 않을 것입니다.{..}할 수 있는 일:

!cp file1 {dir_path + sub_dir}

초기(편집) 답변

간단한 경우 변수 이름 앞에 다음과 같은 기호를 붙일 수 있습니다.$.

파일을 복사하고 싶다고 말합니다.file1이름이 지정된 파이썬 변수에 저장된 경로로dir_pth:

dir_path = "/home/foo/bar"
!cp file1 $dir_path

이피톤 또는 주피터 노트에서

위에서 언급한 것처럼 변수의 내용과 변수를 연결하는 방식에 따라 예상치 못한 결과가 발생할 수 있으므로 일반적인 솔루션을 사용하는 것이 좋습니다.

원시 문자열

원시 문자열 사용에 대한 관련 토론(앞머리에 다음과 같이 붙음)r변수를 전달하려면 Ipython 변수를 문자열 인수로 셸 명령에 전달을 참조하십시오.

다음 구문도 사용할 수 있습니다.

path = "../_data/"
filename = "titanicdata.htm"
! less {path + filename}

@Catbuilts가 지적했듯이,$문제가 있습니다.주요 예제를 포함하지 않고 보다 명확하게 표시하려면 다음을 수행합니다.

afile='afile.txt'
!echo afile
!echo $PWD
!echo $PWD/{afile}
!echo {pwd+'/'+afile}

그러면 다음과 같은 이점을 얻을 수:

afile.txt
/Users/user/Documents/adir
/Users/user/Documents/adir/{afile}
/Users/user/Documents/adir/afile.txt

그냥 덧셈일 뿐입니다.제 경우, 그리고 이 질문의 일부 예에서 보듯이, 제 주장은 공백이 있는 파일 이름이었습니다.그 경우 제가 약간 다른 구문을 사용해야 했습니까?"$VAR"예를 들면,

touch "file with spaces.txt"
echo "this is a line" > "file with spaces.txt"
echo "this is another line" >> "file with spaces.txt"
echo "last but not least" >> "file with spaces.txt"
echo "the last line" >> "file with spaces.txt"
cat "file with spaces.txt"

# The variable with spaces such as a file or a path
ARGUMENT="file with spaces.txt"
echo $ARGUMENT

# The following might not work
cat $pwd$ARGUMENT

# But this should work
cat $pwd"$ARGUMENT"

이것이 도움이 되길 바랍니다.;)

언급URL : https://stackoverflow.com/questions/35497069/passing-ipython-variables-as-arguments-to-bash-commands

반응형