열심히 구글링하다가 제목 보고 오해하고 오실까봐 미리 말씀드리면,
그냥 이런 파일 여는거 파이썬으로 해봅시다~ 하는 게시글입니다.
저같은경우 백준을 풀고 깃허브에 글을 계속 올립니다.
물론 깃허브에 자동으로 올려주는 툴도 있지만.. 저는 문제푸느라힘들었어요 ㅠㅠ 이런 글 막 쓰고 올리는지라 저랑은 맞지 않았습니다.
그래서 현재까지는 계속 파일을 만들어서 해왔는데.. 노트북도 바뀌고 VSC로 전부 맞추다보니 욕심이 생기더라고요. 파일생성정도는 직접 하게 하는 방법이 없을까.. 글은 어차피 내가 써야하고 올리는건 깃허브 데스크탑 쓰면 되는데.. 이런.
그래서 열심히 찾은 결과, code (파일이름)
을 powershell에 치면 창이 뜬다는 것을 알았습니다. code
만 치면 아예 VSC 새 창이 뜨고요.
여하튼, 이걸 응용해서
import os, sys, shutil
import subprocess
class Path:
home = r"C:\Users\Glory\Desktop\codeZip\Git\DSA\PS"
lang = {
"asm" : "Assembly",
"cpp" : "C++",
"rb" : "Ruby",
"rs" : "Rust",
"java" : "Java",
"swift": "Swift",
"kt" : "Kotlin",
"go" : "Go",
"py" : "Python",
"js" : "Node.js",
"cs" : "C#"
}
filePath = sys.argv[1]
extension = sys.argv[1].split(".")[-1]
def main(number, name):
makeFileName = f"BJ_{number} ({name}).{extension}"
makeFilePath = fr"{Path.home}\{lang[extension]}\{makeFileName}"
os.chdir(fr"{Path.home}\{lang[extension]}")
shutil.copy(filePath, makeFilePath)
subprocess.call(["code", makeFileName], shell=True)
if __name__ == "__main__":
number = input("Enter the Problem Number\n")
name = input("Enter the Problem Name\n")
main(number, name)
이런 파일을 만들었습니다. 순전히 제가 쓰는 용도죠.
뜯어보면 간단하게 입력받은 문제 번호와 이름을 이용해 파일을 복사하고, 그 파일을 띄우는겁니다.
subprocess.call
의 매개변수 shell
을 True
로 하는 것으로 VSC의 Powershell에서 실행할 수 있게 됩니다.
당연히 키바인딩을 해야겠죠.
{
"version": "2.0.0",
"tasks": [
{
"label": "run",
"type": "shell",
"command": [
"python",
"c:/Users/Glory/Desktop/codeZip/VSC/bat/codeRunner.py",
"${file}"
]
},
{
"label": "makeFile",
"type": "shell",
"command": [
"python",
"c:/Users/Glory/Desktop/codeZip/VSC/bat/toDSA.py",
"${file}"
]
}
]
}
여기서 makeFile이 그거고..
[
{
"key": "alt+r",
"command": "workbench.action.tasks.runTask",
"args": "run"
},
{
"key": "alt+s",
"command": "workbench.action.tasks.runTask",
"args": "makeFile"
}
]
이게 키바인딩. 저는 alt+s로 했습니다.